2012-01-11 66 views
0
<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition> 
      <Condition.Binding> 
       <MultiBinding Converter="{StaticResource BooleanOr}"> 
        <Binding Path="Property Value =5"/> 
        <Binding Path="Property Value =10"/> 
       </MultiBinding> 
      </Condition.Binding> 
     </Condition> 
    </MultiDataTrigger.Conditions> 

///做的東西在這裏根據病情結合.... 比較多觸發與價值

的代碼意味着,當值eqauls 5或20 ===>做一些事情。

我跟着this一個多觸發器

"Binding Path="Property Value =5""此行顯然是錯誤的。

我應該在這裏寫什麼來比較價值是5還是不是 謝謝!

回答

0

你需要另一種轉換器,看一個值等於任何值你比較反對

<MultiBinding Converter="{StaticResource BooleanOr}"> 
    <Binding Path="Value" ConverterParameter="5" Converter="{StaticResource IsValueEqualParameterConverter}" /> 
    <Binding Path="Value" ConverterParameter="10" Converter="{StaticResource IsValueEqualParameterConverter}" /> 
</MultiBinding> 

另一種選擇是使用DataTriggers

<Style> 
    <Setter Property="SomeProperty" Value="FalseValue" /> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding Value}" Value="5"> 
      <Setter Property="SomeProperty" Value="TrueValue" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding Value}" Value="10"> 
      <Setter Property="SomeProperty" Value="TrueValue" /> 
     </DataTrigger> 
    </Style.Triggers> 
</Style> 
0

如果您沒有多個條件,則不需要MultiDataTrigger

如果你想比較一個值,你可以使用converter其中Binding.ConverterParameter設置爲所述值。轉換器只是比較值和參數(如果它不作爲int通過,可能與應用於參數的解析相關)

當然,除了屬性路徑以外,不要將任何東西放入Path。轉換器應該直接返回truefalse,因爲這大概是由MultiBinding.Converter預計的。

+0

其實我有很多要比較。實際上,我想在從0〜20的值時觸發動作。你能給我一些代碼示例如何做到這一點?謝謝。 – 2012-01-11 17:15:24

+0

@AndersLind:如果需要轉換器的示例,我不會看到鏈接的引用。比較值和解析字符串幾乎不需要一個例子,如果是這樣的話,你可能想看看每個基本類型都可以找到的'Parse'和'TryParse'方法。 – 2012-01-11 18:24:17