0

我在 WPF 中仍然是血腥的绿色,还没有完全掌握它背后的概念。我有以下问题:

我想根据先决条件在数据网格中设置触发器。

例子:

在我的代码隐藏中,我有一个字符串变量,我们称之为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`

我已经尝试将字符串绑定到数据网格的数据上下文,但这会适得其反,因为它删除了我与数据库的绑定。

有人能帮我一下吗。一个例子,朝着正确的方向推动等等......

我真的很喜欢 WPF 为您提供的选项,但正是这些基本的东西,在 WinForms 中很容易处理,让我在 WPF 中发疯。

谢谢

4

1 回答 1

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绑定来查找包含该属性的类。我的示例假设类variableString上有一个公共属性Window

于 2012-05-03T14:02:07.133 回答