2012-05-03 85 views
0

我在WPF中仍然是血腥的綠色,並且還沒有完全理解它背後的概念。我有以下問題:Datagrid multitrigger引用代碼隱藏的值

我想根據前提條件在數據網格中設置觸發器。

例子:

在我的代碼隱藏,我有一個字符串變量,我們稱之爲variableString。現在取決於variableString的價值,我想啓用/禁用數據網格中的觸發器,我在XAML定義了諸如:

if(variableString == "a") 

然後

XAML

<DataGrid AutoGenerateColumns="False" Margin="5,5,0,75" Name="dataGrid1" ItemsSource="Binding}"> 
    <DataGrid.ItemContainerStyle> 
     <Style TargetType="DataGridRow"> 
      <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=SomeColumnName}" Value="someValue"> 
        <Setter Property="Background" Value="White"/> 
        <DataTrigger Binding="{Binding Path=SomeColumName}" Value="someOtherValue"> 
        <Setter Property="Background" Value="Red"/> 
      </Style.Triggers> 
     </Style> 
    </DataGrid.ItemContainerStyle> 

否則,如果

if(variableString == "b") 

然後

Do Nothing` 

我已經嘗試將字符串綁定到datagrid的datacontext,但這是相當的反作用,因爲它刪除了我對數據庫的綁定。

任何人都可以幫助我。一個例子,在正確的方向推等...

我真的很喜歡WPF給你的選項,但它是那些在WinForms中很容易處理的基本事情,讓我在WPF中生氣。

感謝

回答

1

我想你想一個MultiDataTrigger,它允許您根據您的觸發器關多個值

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
     <Condition Binding="{Binding Path=SomeColumnName}" Value="someValue" /> 
     <Condition Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}, Path=variableString}" Value="A" /> 
    </MultiDataTrigger.Conditions> 
    <Setter Property="Background" Value="White" /> 
    </MultiDataTrigger> 

,找到你的代碼串的後面,你可能不得不使用某種RelativeSource綁定來查找包含該屬性的類。我的例子假設Window

+0

有一個名爲variableString的公共屬性謝謝,這有幫助。 – tcm1211