如何简单地将其绑定到 ConverterParameter?
我有问题,我不知道如何解决这个简单的问题,我有很多这样的点,那么解决方案应该不复杂。
我有带有设置和主 XAML 的主项目。
我有带有 Binding Converter 的依赖项项目,XAML 文件如下所示:
<TextBlock Text="{Binding X.Y.Z,
Converter={StaticResource ProbabilityConverter},
ConverterParameter=??????????????, Mode=OneWay}"
/>
此 XAML 文件由主项目中的主 XAML 文件加载。
我必须将一个属性的值从设置传递到 ConverterParameter
,该参数可以在运行时更改,那么这必须是 Binding
,Binding
i在这种情况下只能对 DependencyProperty 执行此操作。
我必须为此设置属性做 DependencyProperty
包装才能解决这个问题吗?
当我尝试在 ConverterParameter
中设置 Binding
时,我将在运行时收到此异常:
无法在 类型的“ConverterParameter”属性 ‘绑定’。只能设置“绑定” 在 a 的 DependencyProperty 上 依赖对象。
I have problem and i don't know how to solve this simple, i have many points like this, then solution should be not complicated.
I have main project with Settings and main XAML.
I have dependency project with Binding Converter and XAML File looks like:
<TextBlock Text="{Binding X.Y.Z,
Converter={StaticResource ProbabilityConverter},
ConverterParameter=??????????????, Mode=OneWay}"
/>
This XAML file is loading by main XAML file from main project.
I must pass value of one property from Setting's to ConverterParameter
, this parameter can be changing at runtime, then this is must be Binding
, Binding
i can do only for DependencyProperty
in this case.
I must do DependencyProperty
wrapper for this Setting property to solve this problem?
When i try set Binding
in ConverterParameter
i will get this exception at runtime:
A 'Binding' cannot be set on the
'ConverterParameter' property of type
'Binding'. A 'Binding' can only be set
on a DependencyProperty of a
DependencyObject.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以绑定到任何属性,它不必是依赖属性。但是,如果您希望 UI 在属性发生更改时立即反映这些更改,您有两个选择:
INotifyPropertyChanged
并在属性更改时引发PropertyChanged
事件。编辑:
正如问题编辑中所指出的,不可能绑定到
ConverterParameter
。但您可以使用MultiBinding
。例如,假设您想要绑定到日期并将转换器区域性规范作为参数,并在区域性更改时刷新绑定(我不确定这是一个好主意,但它可以很好地作为示例)。您可以这样做:这里,
Date
和Settings
都是当前DataContext
的属性。DateCultureConverter
实现了IMultiValueConverter
,您可能会将其放在实际应用程序中层次结构上几层的资源中。You can bind to any property, it doesn't have to be a dependency property. But if you want your UI to reflect changes in the property immediately when they happen, you have two options:
INotifyPropertyChanged
on the type that holds the property and raise thePropertyChanged
event when the property changes.EDIT:
As pointed out in the edit to the question, it's not possible to bind to
ConverterParameter
. But you can useMultiBinding
. For example, assume you want to bind to a date and give the converter culture specification as a parameter and refresh the binding when the culture changes (I'm not sure this is a good idea, but it serves well as an example). You could do it like this:Here, both
Date
andSettings
are properties on the currentDataContext
.DateCultureConverter
implementsIMultiValueConverter
and you would probably put it in resources few levels up the hierarchy in real application.您可以使用以下解决方案之一:
https://marlongrech.wordpress.com/2008/08/03/my-wish -came-true-i-can-now-use-databinding-in-a-converterparameter/
您必须集成 BindableParameter 和 BindableParameterExtension 类(见下文),然后您可以按如下方式使用它:
中:
在XAML BindableParamerter 的属性“TargetProperty”:
必须设置为原始绑定属性(在本例中为“TextBox.Text”)。
Sample-Converter:
该参数可在“Convert”和“ConvertBack”方法中使用(可用于绑定到视图模型)。
BindableParameter 和 BindableParameterExtension 类(URL 见上文(不是我的代码))
http://drwpf.com/blog/2007/09/02/supplying-an-object-reference-in-the -constructorparameters-collection-of-an-objectdataprovider/
您必须集成类 ObjectReference:
http://www.drwpf.com/blog/Portals/0/Code/ObjectReference.cs.txt
在 XAML 中:
片段:
在静态字典和部分中创建引用:
从字典中获取此对象引用 -->这里没有绑定,字典在解析时被填充。
Sample-Converter:
http://www.codeproject.com/Articles/456589/Bindable-Converter-Parameter
在 XAML 中:
示例转换器:
You can use one of the following solutions:
https://marlongrech.wordpress.com/2008/08/03/my-wish-came-true-i-can-now-use-databinding-in-a-converterparameter/
You must integrate the class BindableParameter and BindableParameterExtension (see below) and then you can use it as follows:
In XAML:
The Property "TargetProperty":
of the BindableParamerter must be set to the original bound property (in this case "TextBox.Text").
The Sample-Converter:
The parameter could be used in the "Convert" and the "ConvertBack" method (useful to bind to an view model).
Class BindableParameter and BindableParameterExtension (URL see above (not my code))
http://drwpf.com/blog/2007/09/02/supplying-an-object-reference-in-the-constructorparameters-collection-of-an-objectdataprovider/
You must integrate the class ObjectReference:
http://www.drwpf.com/blog/Portals/0/Code/ObjectReference.cs.txt
In XAML:
The snipped:
creates the reference in an static dictionary and the part:
takes this object reference from the Dictionary --> no binding here, the dictionary is filled on parse time.
The Sample-Converter:
http://www.codeproject.com/Articles/456589/Bindable-Converter-Parameter
In XAML:
The Sample-Converter: