2009-07-09 22 views
0

我想使用MultiDataTriggers來啓用/禁用基於兩個文本框的值的按鈕。WPF MutiDataTrigger不發射setter

該文檔聲明MultiDataTrigger中的條件邏輯與在一起。在下面的例子中,如果txtFirst.Text是foo和txtSecond.Text是酒吧,我想啓用按鈕。但是,該按鈕始終保持禁用狀態(IsEnabled = false)。

我相信我在這裏缺少的一招,但仔細搜索谷歌還沒有得到我在任何地方....

<StackPanel> 
     <Button IsEnabled="False" Content="OK"> 
      <Button.Style> 
       <Style> 
        <Style.Triggers> 
         <MultiDataTrigger> 
          <MultiDataTrigger.Conditions> 
           <Condition Binding="{Binding ElementName=txtFirst, Path=Text}" Value="foo"/> 
           <Condition Binding="{Binding ElementName=txtSecond, Path=Text}" Value="bar"/> 
          </MultiDataTrigger.Conditions> 
          <Setter Property="Button.IsEnabled" Value="True"/> 
         </MultiDataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

     <TextBox x:Name="txtFirst"/> 
     <TextBox x:Name="txtSecond"/> 
    </StackPanel> 

回答

3

直接在物體本身上設置的屬性會覆蓋任何風格觸發的設置。將您的按鈕聲明更改爲:

<Button Content="OK"> 
    <Button.Style> 
     <Style> 
      <Setter Property="IsEnabled" Value="False"/> 
      <Style.Triggers> 

既然在樣式中設置了IsEnabled屬性,則觸發器可以更改它。不要問我爲什麼。 :)

+0

就是這樣!謝謝 :-) – Sean 2009-07-09 09:57:33