很多时候一些简单的使用绑定需要对绑定的源做处理就需要通过转换器,这样的代码写起来不好看
本文告诉大家通过一个简单的库可以实现在界面绑定的时候通过表达式不需要转换
首先通过 Nuget 安装 CalcBinding 库,注意 Nuget 的地址是 https://api.nuget.org/v3/index.json 如果没有找到这个库就请复制链接点击更新,再输入 CalcBinding
寻找
在使用这个库之前需要引用命名空间,打开 MainWindow.xaml 文件,添加命名空间
然后创建一个数据用来绑定
这时在界面如果需要创建一个 TextBlock 绑定三个值 A + B + C 就可以通过下面的方法
通过直接写表达式的方式就可以,十分简单
那如果需要加上一些常量怎么做,如计算 0.5*A+B
可以怎么写?
修改一下界面然后运行
如果此时的还有一些布尔量怎么办?打开 ViewModel 类添加下面代码
如果需要绑定 A 和 B 可以这样写
修改一下界面
其他可以写的是表达式
判断布尔
因为在 xaml 不能使用 &&
||
<=
所以需要使用 and or ‘less=’ 替换
另外对于 :
之前需要添加空格,如下面代码
这些都是对的,但是下面的代码是无法运行
可以绑定静态的值,静态的值的写法 xmlNamespace:Class.StaticProperty.NestedProperty
命名空间下的类的静态属性的属性
对于经常计算值这里也可以简单使用,如 Math 里面的方法
枚举值也可以点命名空间的枚举的值,可以用来判断 xmlNamespace:EnumClass.Value
如在 Foo 枚举里面有 A 这个值
经常会将 bool 转换为 Visibility 这个库也有简单的方法
如果需要在样式使用,需要通过 RelativeSource 找到方法
Alex141/CalcBinding: Advanced WPF Binding which supports expressions in Path property and other features
原文链接: http://blog.lindexi.com/post/WPF-%E5%9C%A8%E7%BB%91%E5%AE%9A%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B7%BB%E5%8A%A0%E8%AE%A1%E7%AE%97
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
欢迎转载、使用、重新发布,但务必保留文章署名 林德熙 (包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我 联系。