WPF按钮IsEnabled检查多个绑定

时间:2014-04-01 11:59:05

标签: c# wpf

我有一个XAML按钮的IsEnabled属性,当前配置了以下数据绑定:

<Button Name="ThirdPartyPostoneButton" Content="Postpone"
        Click ="postponeThirdPartyUpdatesButton_Click" Margin="5,5,0,0"
        Height="25" IsEnabled="{Binding Item3.CanDefer}"/>

我还需要添加IsEnabled="{Binding Item3.InstallSourceExists}"的检查(换句话说,必须满足两个条件才能启用按钮)。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:4)

我能想到的两个选择: -

  1. 使用MultiBinding加上自定义IMultiValueConverter,检查两个值是否为真。

  2. 在你的&#34; Item3&#34;上展示一个新属性。如果其他属性都为True,则返回true的模型。这是一种更简洁的方法,意味着如果将来逻辑发生变化(例如,您需要包含第三个bool属性),则不必触摸您的XAML。

答案 1 :(得分:0)

使用像这样的多重绑定:

<Button Name="ThirdPartyPostoneButton" Content="Postpone" Click ="postponeThirdPartyUpdatesButton_Click" Margin="5,5,0,0" Height="25" >
  <Button.IsEnabled>
    <MultiBinding Converter="{StaticResource MyCustomConvertor}">
      <Binding Path="Item3.CanDefer"/>
      <Binding Path="Item3.InstallSourceExists"/>
    </MultiBinding>
  </Button.IsEnabled>
</Button>