Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于绑定到DataView的DataGrid中的单元格值的DataTrigger_C#_Wpf_Xaml_Datagrid - Fatal编程技术网

C# 基于绑定到DataView的DataGrid中的单元格值的DataTrigger

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中行的背景。我的研究让我得出结论,你可以用DataTrigger来实现这一点,但我似乎无法编写一个不会出错的绑定表达式

我对该部分的XAML如下所示:

<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的新手,我认为我的工作方式是正确的。