在WPF

2013-08-30 38 views
-2

風格觸發如果((A & &(B || || C^d))||(E & &(F || ||克H)))在WPF

然後設置按鈕IsEnabled屬性真

我想在WPF中使用樣式觸發器中的按鈕實現此功能。

在此先感謝。

+0

有多種方式來處理這種事情,因爲所有的慷慨答案說,但是我可以給你的最好的建議是,這是你想要保留在窗體外的確切類型的邏輯,並在你的ViewModel(MVVM方法)中處理。那麼你的綁定將非常簡單。 – Liz

回答

1

最簡單的方法將是約束所有使用Mutlivalueconverter這些以IsEnable財產的風格,並把這個邏輯轉換器的轉換方法:

<Style TargetType={x:Type Button}> 
<Setter Property="IsEnabled"> 
         <Setter.Value> 
          <MultiBinding Converter="{StaticResource MyConverter}"> 
          <Binding Path="a"/> 
          <Binding Path="b"/> 
          <Binding Path="c"/> 
          <Binding Path="d"/> 
          <Binding Path="e"/> 
          <Binding Path="f"/> 
          <Binding Path="g"/> 
          <Binding Path="h"/> 
          </MultiBinding> 
         </Setter.Value> 
        </Setter> 
</Style> 

這裏MyConverter是Multivalueconverter。

感謝

1

沒有||在MultiDataTrigger中。您必須改用多個觸發器。採取你的表達式並提取所有不含||的子表達式當按鈕應啓用:

  • 一個& & b
  • 一個& &Ç
  • 一個& & d
  • Ë& &˚F
  • Ë& &克
  • ë& &^h

現在他們每個人在你的風格,按鈕的Enabled屬性設置爲true建立MultiDataTrigger。而已。

0

正如其他人所提到的,WPF中沒有對任意布爾表達式的內置支持。

如果你願意加入第三方軟件,但是,PyBinding允許你使用Python表達式在WPF綁定:

<Button IsEnabled="{p:PyBinding $[.a] and ($[.b] or $[.c] or $[.d]) ... }"/>