【C#】wpf用MultiBinding解决Converter需要动态传参的问题,以Button为例
来源:互联网 发布:javlibrary新域名 7 编辑:程序博客网 时间:2024/05/21 08:44
用Binding并通过Converter转换的时候,可能偶尔会遇到传参的问题,一般通过设置xaml中的BindingParameter属性来给Converter传递参数。
但是这个BindingParameter只支持已经定义好的资源类型(Resource),不支持int,Object等类型,在BindingParameter中也无法再次通过Binding的方法动态赋值。所以,折腾来折腾去还不如用MultiBinding得了。
1.XAML中的使用。
<Button Margin="20,0" Style="{StaticResource btnRecomendStyle}" > <Button.Content> <MultiBinding Converter="{StaticResource bool_PercentToStringConverter}"> <Binding Path="IsTest"></Binding> <Binding Path="TestPercent"></Binding> </MultiBinding> </Button.Content> <Button.Command> <MultiBinding Converter="{StaticResource bool_PercentToCommandConverter}"> <Binding Path="IsTest"></Binding> <Binding Path="TestPercent"></Binding> </MultiBinding> </Button.Command> </Button>Button的Content和Command都进行了两个绑定,这两个绑定将作为下面Converter类Object[]中的两个参数。
2.定义MultiConverter类,bool_PercentToStringConverter:
class Bool_PercentToStringConverter : IMultiValueConverter { public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) { bool b; int Percent; Boolean.TryParse(values[0].ToString(), out b); Int32.TryParse(values[1].ToString(), out Percent); if (b) { if (Percent < 100) { return Application.Current.FindResource("IDS_CANCEL"); } else { return Application.Current.FindResource("IDS_DONE"); } } else { return Application.Current.FindResource("IDS_TEST"); } } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }这里不再实现IValueConverter接口,而是实现IMultiValueConverter。Object[] values里保存的就是传入的两个Binding。
0 0
- 【C#】wpf用MultiBinding解决Converter需要动态传参的问题,以Button为例
- WPF 使用MultiBinding ,TwoWay ,ValidationRule ,需要注意的事项
- WPF动态绑定图片路径,不用Converter完美解决
- Linux下文件移动问题的排查及解决(以C代码为例)
- WPF MultiBinding 给数据目标赋值后绑定无效的问题
- wpf中的 绑定Binding MultiBinding StringFormat格式转化问题
- WPF中的MultiBinding
- android 简单的自定义UI(以Button为例)
- WPF中Converter的使用
- 【C#】【WPF】Button按钮动态设置Background背景颜色
- WPF中button的trigger问题
- WPF应用Binding之MultiBinding
- 基于Converter解决Struts无法处理日期类型的问题
- 基于Converter解决Struts无法处理日期类型的问题
- 基于Converter解决Struts无法处理日期类型的问题
- 使用泛型解决需要动态返回类型的问题
- 解决PyDev对新模块代码提示的问题【以cv2为例】
- 解决ssh登录linux速度慢的问题(以centos7为例)
- selenium进行新浪博客自动签到
- 算法基础之数组去重
- java基础总结18-java常用API(String类)
- 关于一个简单的策略设计模式的例子
- 15决赛方格填数
- 【C#】wpf用MultiBinding解决Converter需要动态传参的问题,以Button为例
- part-4 运放噪声快速计算
- 历届试题 波动数列
- Java关键字abstract
- Python新浪博客签到
- 解决bug的小方法
- part-5 电源抑制比DC-PSRR
- error while loading shared libraries: libmkl_rt.so: cannot open shared object file: No such file or
- linux CentOS7 更改主机名