【发布时间】:2016-10-28 16:35:59
【问题描述】:
DataContext 属性的正确 DataTrigger 绑定是什么? 我有一个像这样绑定的 DataGrid:
XAML:
<DataGrid x:Name="dataGrid" Grid.Row="4" Grid.ColumnSpan="2"
ItemsSource="{Binding}"
CellStyle="{StaticResource RowStateStyle}"
>
</DataGrid>
在 .cs 中,网格绑定到 DataTable,因此单元格的 DataContext 是 DataRowView,包含 Row 作为属性:
// DataTable containing lots of rows/columns
dataGrid.DataContext = dataTable;
编辑:
参考 ASh 的解决方案,我编辑了样式并将 Triggers for Unchanged 和 Modified 放入:
<Style x:Key="RowStateStyle" TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=DataContext.Row.RowState,
RelativeSource={RelativeSource Self}}" Value="Unchanged">
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=DataContext.Row.RowState,
RelativeSource={RelativeSource Self}}" Value="Modified">
<Setter Property="Foreground" Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=Content.Text,
RelativeSource={RelativeSource Self}}" Value="test">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
在 Content.Text 上触发非常好,Unchanged 也是如此。但是,当我修改一个单元格(因此 DataRowState = Modified)时,什么也没有发生并且颜色保持绿色。有什么解决办法吗?
【问题讨论】:
标签: c# wpf xaml datagrid datatrigger