问题描述
请教一下大家,我使用转换器对一个控件的值进行转换,这时候如何在转换器的类里面访问控件中的某个字段呢?大家能否提供一点思路?在这谢谢关键代码如下:XMAL:<UserControl><UserControl.Resources><local:ValueToProcessConverterx:Key="ValueToProcessConverter"/></UserControl.Resources>……<BorderBackground="{TemplateBindingValue,Converter={StaticResourceValueToProcessConverter},ConverterParameter=300}"/>……<UserControl>
C#://控件类publicpartialclassProgressBar:UserControl{……publicstringCtrlString{get;set;}……}//转换器类classValueToProcessConverter:IValueConverter{publicobjectConvert(objectvalue,TypetargetType,objectparameter,System.Globalization.CultureInfoculture){……CtrlString=“newValue”;//CtrlString为UserControl中某个属性,如何在这里进行访问呢……}}
解决方案
解决方案二:
可以对objectvalue参数反射
解决方案三:
你的“newValue”(引用mvvm属性或者或者引用别的什么Element名称)应该出现在xaml上Background的绑定声明上,在运行时wpf会为Convert(objectvalue,....这里的value参数传入你所绑定的属性值。为什么你不遵循xaml的规范去声明,而“倒着”发明一种转换器概念呢?
解决方案四:
引用2楼sp1234的回复:
你的“newValue”(引用mvvm属性或者或者引用别的什么Element名称)应该出现在xaml上Background的绑定声明上,在运行时wpf会为Convert(objectvalue,....这里的value参数传入你所绑定的属性值。为什么你不遵循xaml的规范去声明,而“倒着”发明一种转换器概念呢?
谢谢你的回复。是这样的,因为value已经绑定了一个属性值了,而在转换器中还需要访问所绑定控件的某些字段,所以就不知道怎么搞了。