样式WPF数据网格行绑定属性

本文关键字:绑定 属性 网格 数据网 WPF 数据 样式 | 更新日期: 2023-09-27 18:10:03

我有一个绑定到EventRecords列表的数据网格。在EventRecord对象上是一个属性IsAutoEvent。我正试图根据此属性是否为真或不设置行上的背景颜色,但DataContext没有按我的期望设置。

<DataGrid Name="EventGrid" IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding Events}" SelectedItem="{Binding SelectedEvent}" CanUserAddRows="False" SelectionMode="Single" SelectionUnit="FullRow">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Start Time"  Width="Auto" Binding="{Binding StartTime, StringFormat={}{0:hh:mm:ss}}" CellStyle="{StaticResource CenterAlignedDataGridCell}"/>        
        <DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description}" CellStyle="{StaticResource CenterAlignedDataGridCell}"/>
        <DataGridTextColumn Header="Comments" Width="*" Binding="{Binding Comment}"/>        
    </DataGrid.Columns>
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">            
            <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=IsAutoEvent}">
                        <Setter Property="Background" Value="Red"/>
                    </DataTrigger>
            </Style.Triggers>            
        </Style>
    </DataGrid.RowStyle>
</DataGrid>

当前,这没有做任何事情。我不认为数据上下文是正确的,因为在DataTrigger下,{Binding}显示了视图的属性(例如MainViewModel),而不是DataGridRow(例如EventRecord),正如我所期望的那样。

任何想法吗?

样式WPF数据网格行绑定属性

你没有把Value放到DataTrigger

               <DataTrigger Binding="{Binding Path=IsAutoEvent}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>

请将Value添加到您的DataTrigger

<DataGrid Name="EventGrid" IsReadOnly="True" AutoGenerateColumns="False" ItemsSource="{Binding Events}" SelectedItem="{Binding SelectedEvent}" CanUserAddRows="False" SelectionMode="Single" SelectionUnit="FullRow">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Start Time"  Width="Auto" Binding="{Binding StartTime, StringFormat={}{0:hh:mm:ss}}" CellStyle="{StaticResource CenterAlignedDataGridCell}"/>        
        <DataGridTextColumn Header="Description" Width="*" Binding="{Binding Description}" CellStyle="{StaticResource CenterAlignedDataGridCell}"/>
        <DataGridTextColumn Header="Comments" Width="*" Binding="{Binding Comment}"/>        
    </DataGrid.Columns>
    <DataGrid.RowStyle>
        <Style TargetType="{x:Type DataGridRow}">            
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=IsAutoEvent}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>            
        </Style>
    </DataGrid.RowStyle>
</DataGrid>