我有问题,我不知道如何解决这个简单问题,我有很多这样的观点,因此解决方案应该不复杂。
我有带有设置和主要XAML的主项目。
我具有绑定转换器和XAML文件的依赖项目,看起来像:
<TextBlock Text="{Binding X.Y.Z,
Converter={StaticResource ProbabilityConverter},
ConverterParameter=??????????????, Mode=OneWay}"
/>
此XAML文件由主要项目的主要XAML文件加载。
我必须将一个属性的值从设置的值传递给ConverterParameter
,此参数可以在运行时更改,然后必须为Binding
,在这种情况下,Binding
我只能对DependencyProperty
执行此操作。
我必须对此设置属性进行DependencyProperty
包装才能解决此问题?
[当我尝试在Binding
中设置ConverterParameter
时,我将在运行时收到此异常:
无法在类型的'ConverterParameter'属性'捆绑'。只能设置“绑定”在一个的DependencyProperty上DependencyObject。
您可以绑定到任何属性,它不必是依赖项属性。但是,如果您希望用户界面在发生更改时立即反映出属性中的更改,则有两种选择:
INotifyPropertyChanged
并在属性更改时引发INotifyPropertyChanged
事件。编辑:
正如问题编辑中所指出的那样,不可能绑定到PropertyChanged
。但是您可以使用ConverterParameter
。例如,假设您要绑定一个日期,并指定转换器的区域性规范作为参数,并在区域性更改时刷新绑定(我不确定这是个好主意,但可以很好地用作示例)。您可以这样做:
MultiBinding
这里,<TextBlock>
<TextBlock.Resources>
<local:DateCultureConverter x:Key="converter" />
</TextBlock.Resources>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource converter}">
<Binding Path="Date" />
<Binding Path="Settings.Culture" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
和Date
都是当前Settings
的属性。 DataContext
实现了DateCultureConverter
,您可能会在实际应用程序中将其放在资源中仅几层级。
您可以使用以下解决方案之一: