C# 基于绑定到DataView的DataGrid中的单元格值的DataTrigger
我试图根据其中一个单元格的当前值更改DataGrid中行的背景。我的研究让我得出结论,你可以用DataTrigger来实现这一点,但我似乎无法编写一个不会出错的绑定表达式 我对该部分的XAML如下所示:C# 基于绑定到DataView的DataGrid中的单元格值的DataTrigger,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我试图根据其中一个单元格的当前值更改DataGrid中行的背景。我的研究让我得出结论,你可以用DataTrigger来实现这一点,但我似乎无法编写一个不会出错的绑定表达式 我对该部分的XAML如下所示: <DataGrid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding TodaysBets}" ColumnWidth="*" CanUserAddRows="False" AutoGenerate
<DataGrid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding TodaysBets}" ColumnWidth="*" CanUserAddRows="False" AutoGenerateColumns="False" TextBlock.FontSize="14" IsReadOnly="True">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Matched}" Value="false"> //This binding expression failing
<Setter Property="Background" Value="LightCoral"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
......DataGridColumn Definitions here all bound to "TodaysBets"
</DataGrid.Columns>
</DataGrid>
匹配列是一个布尔值,它不断抛出绑定错误,例如在对象DataRowView上找不到匹配的属性。有人能帮我吗我什么都试过了
它抛出的错误是:
System.Windows.Data错误:40:BindingExpression路径错误:在“object”DataRowView“HashCode=4932563”上未找到“Matched”属性。BindingExpression:Path=Matched;DataItem='DataRowView'HashCode=4932563;目标元素是'DataGridRow'Name=;目标属性为“NoTarget”类型“Object”找到了此问题的解决方案。我所要做的就是将绑定表达式更改为:
Binding="{Binding Row.Matched}"
因为绑定选择的是DataRowView,所以我必须让绑定表达式选择底层DataRow,然后才能绑定到正确的属性。解决方案:创建一个具有正确属性和INotifyPropertyChanged的正确强类型数据模型,并忘掉陈旧、丑陋、未类型化的数据模型,神奇的基于字符串的数据表。@HighCore你能详细说明一下吗?我是WPF的新手,我认为我的工作方式是正确的。