当前位置: 首页 > 编程语言 > C#

绑定到WPF中的元素:路径表达式可以执行数学运算吗?分享

时间:2023-04-10 22:20:41 C#

绑定到WPF中的元素:路径表达式可以做数学运算吗?我正在尝试使用ElementName和Path将控件绑定到父级的高度/宽度属性。但是,我不想绑定到实际高度,而是高度的一半。路径表达式可以做数学吗?例如Path={ActualHeight/2}我找不到办法做到这一点。还有其他巧妙的方法吗?谢谢!不,你不应该使用绑定转换器publicclassMyConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){return(int)value/2;}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){returnnull;我使用MathConverter在我的XAML绑定中进行数学运算。转换器代码可以在这里找到,它是这样使用的:Height="{BindingElementName=RootWindow,Path=ActualHeight,Converter={StaticResourceMathConverter},ConverterParameter=@VALUE/2}"它还会处理更高级的数学方程Height="{BindingElementName=RootWindow,Path=ActualHeight,Converter={StaticResourceMathConverter},ConverterParameter=((@VALUE-200)*.3)}"不,标准绑定不支持Path中的表达式。但是你可以看看我的项目CalcBinding,它是专门为解决这个问题而开发的。比如说,你可以这样写:或者whereA,B,C,IsChecked-viewModel的属性,它会很好地工作祝你好运!@Rachel的MathConverter对我来说效果很好,但我正在解析表达式并将其留给NCalc。这样我就不用担心运算符的优先级了。使用NCalc;使用系统;使用System.Globalization;使用System.Windows.Data;namespaceMyProject.Utilities.Converters{publicclassMathConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,CultureInfoculture){//将值解析为等式并删除空格stringexpressionString=parameterasstring;expressionString=expressionString.Replace("","");expressionString=expressionString.Replace("@VALUE",value.ToString());返回新表达式(表达式字符串).Evaluate();}publicobjectConvertBack(objectvalue,TypetargetType,objectparameter,CultureInfoculture){thrownewNotImplementedException();}}}查看我的MathConverter项目。它允许非常高级的表达式,包括字符串格式。特别是,你的表达式将被处理如下:Height="{BindingActualHeight,ConverterParameter=x/2,Converter={StaticResourcemath}}"例子很多,在项目中有基本介绍如何使用主页。以上是C#学习教程:BindingtoelementsinWPF:CanPathexpressionsperformmathematicaloperations?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: