WP开发笔记-一些Converter

一些Converter,包括:bool到visibility的转换;string到visibility的转换等;

说明:使用单例模式。同时包含了反向转换。即:为false时显示,为true时隐藏。

默认效果是: true=>visible, false=>collapsed

public class BooleanToVisibilityConverter : IValueConverter
{
    protected static BooleanConverter converter = new BooleanConverter();

    public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return converter.ConvertBoolean(value);
    }

    protected object InvertConvertBoolean(object value)
    {
        return converter.ConvertBoolean(value, true);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

    protected class BooleanConverter
    {
        public object ConvertBoolean(object value, bool invert = false)
        {
            if (value == null)
                return Visibility.Collapsed;
            bool result = (bool)value;
            result = invert ? !result : result;
            return result ? Visibility.Visible : Visibility.Collapsed;
        }

        public object ConvertString(object value, bool invert = false)
        {
            if (value == null)
                return Visibility.Collapsed;
            string s = value as string;
            if (string.IsNullOrEmpty(s) || s.Trim() == "0")
                return Visibility.Collapsed;
            else
                return Visibility.Visible;
        }

        public object ConvertObject(object value, bool invert = false)
        {
            if (value == null)
                return Visibility.Collapsed;
            return Visibility.Visible;
        }

        public object ConvertFill(object value)
        {
            if (value == null)
                return (Brush)Application.Current.Resources["PhoneForegroundBrush"];
            return (bool)value ?
            (Brush)Application.Current.Resources["PhoneAccentBrush"]
            : (Brush)Application.Current.Resources["PhoneForegroundBrush"];
        }
    }
}
反向转换:

public class InvertBooleanToVisibilityConverter : BooleanToVisibilityConverter
    {
        public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return base.InvertConvertBoolean(value);
        }
    }
string的转换:

public class StringToVisibilityConverter : BooleanToVisibilityConverter
    {
        public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return converter.ConvertString(value);
        }
    }
示例代码: GitHub>>

转载于:https://my.oschina.net/wower/blog/147836

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值