gpt4 book ai didi

c# - 如何简单地将其绑定(bind)到 ConverterParameter?

转载 作者:IT王子 更新时间:2023-10-29 04:24:34 25 4
gpt4 key购买 nike

我有问题,我不知道如何解决这个简单的问题,我有很多这样的点,那么解决方案应该不复杂。

我有带有设置和主 XAML 的主项目。

我有绑定(bind)转换器和 XAML 文件的依赖项目:

<TextBlock Text="{Binding X.Y.Z, 
Converter={StaticResource ProbabilityConverter},
ConverterParameter=??????????????, Mode=OneWay}"
/>

此 XAML 文件由主项目的主 XAML 文件加载。

我必须将一个属性的值从 Setting 传递给 ConverterParameter,这个参数可以在运行时改变,那么这必须是 BindingBinding 在这种情况下,我只能为 DependencyProperty 做。

我必须为此设置属性做 DependencyProperty 包装才能解决这个问题吗?

当我尝试在 ConverterParameter 中设置 Binding 时,我将在运行时遇到此异常:

A 'Binding' cannot be set on the 'ConverterParameter' property of type 'Binding'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.

最佳答案

您可以绑定(bind)到任何属性,它不一定是依赖属性。但是,如果您希望 UI 在属性发生变化时立即反射(reflect)出来,您有两种选择:

  1. 将该属性设为依赖属性。
  2. 实现 INotifyPropertyChanged在持有属性的类型上,并在属性更改时引发 PropertyChanged 事件。

编辑:

正如在对问题的编辑中所指出的,不可能绑定(bind)到 ConverterParameter。但是您可以使用 MultiBinding。例如,假设您想要绑定(bind)到一个日期并将转换器文化规范作为参数提供,并在文化发生变化时刷新绑定(bind)(我不确定这是个好主意,但它可以作为一个很好的例子)。你可以这样做:

<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>

这里,DateSettings 都是当前DataContext 的属性。 DateCultureConverter 实现了 IMultiValueConverter,在实际应用程序中,您可能会将其放在层次结构上几层的资源中。

关于c# - 如何简单地将其绑定(bind)到 ConverterParameter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com