2014-01-09 6 views
1

Я пытаюсь изменить фон строки в моем DataGrid на основе текущего значения одной из ячеек. Мои исследования привели меня к выводу, что вы можете сделать это с помощью DataTrigger, но я не могу написать выражение привязки, которое не будет ошибкой.DataTrigger на основе значения ячейки в DataGrid, связанной с DataView

Мой 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 Error: 40 : BindingExpression path error: 'Matched' property not found on 'object' ''DataRowView' (HashCode=4932563)'. BindingExpression:Path=Matched; DataItem='DataRowView' (HashCode=4932563); target element is 'DataGridRow' (Name=''); target property is 'NoTarget' (type 'Object')

+0

Решение: создать надлежащую строго типизированную модель данных с соответствующими свойствами и 'INotifyPropertyChanged' и забыть вековую, уродливую, нетипизированную, основанную на магии строку DataTable. –

+0

@HighCore Можете ли вы уточнить? Я довольно новичок в WPF и думаю, что я собираюсь сделать все правильно. – TylerD87

ответ

0

Обнаруженные решение этого. Все, что я должен был сделать изменить свое выражение привязки к:

Binding="{Binding Row.Matched}" 

Поскольку связывание выбора DataRowView, так что я должен был сделать выражение привязки выбрать основной DataRow, прежде чем я смог привязать к правильной собственности.

Смежные вопросы