数据绑定(十一)多路绑定MultiBinding
发布日期:2021-06-24 18:18:51 浏览次数:2 分类:技术文章

本文共 1676 字,大约阅读时间需要 5 分钟。

原文:

有时候UI要显示的信息又不止一个数据来源决定,就需要使用MultiBinding,MultiBinding具有一个名为Bindings的属性,其类型是Collection<BindingBase>,通过这个属性MultiBinding把一组Binding对象聚合起来,处在这个集合中的Binding对象可以拥有自己的数据校验与转换机制,它们汇集起来的数据将共同决定传往MultiBinding目标的数据。

举例:有如下界面

后台代码中设置MultiBinding

Binding b1 = new Binding("Text") { Source = textBox1 };            Binding b2 = new Binding("Text") { Source = textBox2 };            Binding b3 = new Binding("Text") { Source = textBox3 };            Binding b4 = new Binding("Text") { Source = textBox4 };            MultiBinding mb = new MultiBinding() { Mode = BindingMode.OneWay };            mb.Bindings.Add(b1);            mb.Bindings.Add(b2);            mb.Bindings.Add(b3);            mb.Bindings.Add(b4);            mb.Converter = new LogonMultiBindingConverter();            button1.SetBinding(Button.IsEnabledProperty, mb);
转换器由于需要对多个值进行转换,所以需要使用IMultiValueConverter的派生类进行转换,转换器代码

class LogonMultiBindingConverter : IMultiValueConverter    {        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)        {            if (!values.Cast
().Any(Text => string.IsNullOrEmpty(Text)) && values[0].ToString() == values[1].ToString() && values[2].ToString() == values[3].ToString()) { return true; } return false; } public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } }
运行效果如图

当第一行和第二行的内容相同,并且,第三行和第四行的内容相同时,Submit按钮可用,否则Submit不可用

转载地址:https://blog.csdn.net/weixin_34248258/article/details/86362004 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Linux进程状态
下一篇:【原创】分享一些机器学习和深度学习的学习资料

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月02日 12时07分54秒