如何将资源中的Setter绑定到多个控件?
How to bind a Setter in Resources to multiple controls?
我有一个 UserControl
,其中有两个 ComboBoxes
,它们共享相同的 IsEnabled
属性 的定义:
<ComboBox.IsEnabled>
<MultiBinding Converter="{StaticResource nullMultiConverter}">
<Binding Path="ItemsSource"/>
<Binding ElementName="aThirdIrrelevantComboBox" Path="SelectedItem"/>
</MultiBinding>
</ComboBox.IsEnabled>
基本上,它表示如果 this
组合框的 ItemsSource
为空 或 如果 aThirdIrrelevantComboBox
的 SelectedItem
为null,this
组合框的 IsEnabled
是 false(否则为 true)。
所以我有两个具有完全相同定义(复制粘贴)的组合框。 我怎样才能避免为每个需要它的控件重复这个定义?
我尝试在我的 UserControl.Resources
中创建一个 Setter
,但我似乎不知道如何绑定它。
<UserControl.Resources>
<converters:NullToEnabledMultiConverter x:Key="nullMultiConverter"/>
<Setter Property="ComboBox.IsEnabled" x:Key="shpEnabled">
<Setter.Value>
<MultiBinding Converter="{StaticResource nullMultiConverter}">
<Binding Path="ItemsSource"/>
<Binding ElementName="aThirdIrrelevantComboBox" Path="SelectedItem"/>
</MultiBinding>
</Setter.Value>
</Setter>
</UserControl.Resources>
此绑定不起作用,我的组合框仍处于启用状态:
<ComboBox IsEnabled=IsEnabled="{Binding Value, Source={StaticResource shpEnabled}}"/>
将您的 Setter
放入 Style
并命名为 that:
<Style x:Key="ShpEnabledStyle" TargetType="{x:Type ComboBox}">
<Setter Property="ComboBox.IsEnabled">
<Setter.Value>
<MultiBinding Converter="{StaticResource nullMultiConverter}">
<Binding Path="ItemsSource"/>
<Binding ElementName="aThirdIrrelevantComboBox" Path="SelectedItem"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
然后将 Style
应用于相关的 ComboBox
(es):
<ConboBox Style="{StaticResource ShpEnabledStyle}" ... />
我有一个 UserControl
,其中有两个 ComboBoxes
,它们共享相同的 IsEnabled
属性 的定义:
<ComboBox.IsEnabled>
<MultiBinding Converter="{StaticResource nullMultiConverter}">
<Binding Path="ItemsSource"/>
<Binding ElementName="aThirdIrrelevantComboBox" Path="SelectedItem"/>
</MultiBinding>
</ComboBox.IsEnabled>
基本上,它表示如果 this
组合框的 ItemsSource
为空 或 如果 aThirdIrrelevantComboBox
的 SelectedItem
为null,this
组合框的 IsEnabled
是 false(否则为 true)。
所以我有两个具有完全相同定义(复制粘贴)的组合框。 我怎样才能避免为每个需要它的控件重复这个定义?
我尝试在我的 UserControl.Resources
中创建一个 Setter
,但我似乎不知道如何绑定它。
<UserControl.Resources>
<converters:NullToEnabledMultiConverter x:Key="nullMultiConverter"/>
<Setter Property="ComboBox.IsEnabled" x:Key="shpEnabled">
<Setter.Value>
<MultiBinding Converter="{StaticResource nullMultiConverter}">
<Binding Path="ItemsSource"/>
<Binding ElementName="aThirdIrrelevantComboBox" Path="SelectedItem"/>
</MultiBinding>
</Setter.Value>
</Setter>
</UserControl.Resources>
此绑定不起作用,我的组合框仍处于启用状态:
<ComboBox IsEnabled=IsEnabled="{Binding Value, Source={StaticResource shpEnabled}}"/>
将您的 Setter
放入 Style
并命名为 that:
<Style x:Key="ShpEnabledStyle" TargetType="{x:Type ComboBox}">
<Setter Property="ComboBox.IsEnabled">
<Setter.Value>
<MultiBinding Converter="{StaticResource nullMultiConverter}">
<Binding Path="ItemsSource"/>
<Binding ElementName="aThirdIrrelevantComboBox" Path="SelectedItem"/>
</MultiBinding>
</Setter.Value>
</Setter>
</Style>
然后将 Style
应用于相关的 ComboBox
(es):
<ConboBox Style="{StaticResource ShpEnabledStyle}" ... />