我在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`
我已经尝试将字符串绑定到datagrid的datacontext,但这样做相当矛盾,因为它删除了我对数据库的绑定。
任何人都可以帮助我。一个例子,向正确的方向推进等......
我非常喜欢WPF给你的选项,但是在WinForms中很容易处理的基本内容让我对WPF感到生气。
由于
答案 0 :(得分: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
的公共属性