我有以下class
:
public class Order
{
public int Id { get; set; }
public string OrdName { get; set; }
public int Quant { get; set; }
public int Supplied { get; set; }
}
和DataGrid
:
<DataGrid x:Name="dgOrders" Margin="5" CanUserAddRows="False" CanUserDeleteRows="False"
SelectionMode="Extended" ItemsSource="{Binding}"
SelectionUnit="FullRow" VerticalScrollBarVisibility="Auto"
Height="300" Width="700" HorizontalAlignment="Left" AutoGenerateColumns="False" Grid.Row="2">
<DataGrid.Columns>
<DataGridTextColumn Header="Order Name" Binding="{Binding OrdName}" IsReadOnly="True"/>
<DataGridTextColumn Header="Quantity" Binding="{Binding Quant}" IsReadOnly="True"/>
<DataGridTextColumn Header="Supplied" Binding="{Binding Supplied}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
我想要的是,当Quantity
和Supplied
属性相等时,行背景颜色会发生变化。
我尝试使用Event Trigger
和Converter
,但没有运气(可能我没有正确地在xaml
中实现它们)。
也尝试从后面的代码执行此操作不起作用(尝试获取像this suggests这样的行实例,但我不断获取该行的null
。
答案 0 :(得分:1)
无法在Binding
的{{1}}属性上设置Value
。因此,您需要在数据类型类中添加一个额外的属性:
DataTrigger
然后,使用此属性,您可以使用以下public bool AreQuantityAndSuppliedEqual
{
return Quantity == Supplied;
}
:
Style
它会像这样使用:
<Style x:Key="EqualRowStyle" TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding AreQuantityAndSuppliedEqual}" Value="True">
<Setter Property="Background" Value="LightGreen" />
</DataTrigger>
</Style.Triggers>
</Style>