3

我有一个带有 DataTrigger 设置的 DataGrid,所以当它的值为“UP”时,我希望触发器仅更改“directionColumn”数据网格列中的背景。

到目前为止,我已经更新了整行。我还尝试在 setter 元素中放置“targetname”,但这只会产生错误。请帮忙。

XAML:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="summaryReportDataGridDATE" RowDetailsVisibilityMode="VisibleWhenSelected" Width="330">
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=Direction}" Value="UP">
                    <Setter>
                        <Setter.Property>Background</Setter.Property>
                        <Setter.Value>Red</Setter.Value>
                    <!--<Setter Property="Background" Value="Red" TargetName="directionColumn"/>-->
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.CellStyle>
    <DataGrid.Columns>
        <!--<DataGridTemplateColumn x:Name="dateColumn" Header="Date" Width="100" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <DatePicker SelectedDate="{Binding Path=Date, Mode=OneWay}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>-->

        <DataGridTextColumn x:Name="dateColumn" Binding="{Binding Path=Date, StringFormat={}{0:dd/MM/yyyy}}" Header="Date"  Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT"/>
        <DataGridTextColumn x:Name="closeColumn" Binding="{Binding Path=ClosingPrice}" Header="ClosingPrice" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" />
        <DataGridTextColumn x:Name="directionColumn" Binding="{Binding Path=Direction}" Header="Direction"  Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" />
        <DataGridTextColumn x:Name="resultColumn" Binding="{Binding Path=Result}" Header="Result"  Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT"  />
    </DataGrid.Columns>
</DataGrid>
4

1 回答 1

7

使用 TemplateColumn 而不是自定义单元格样式怎么样:

    <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" Name="summaryReportDataGridDATE" RowDetailsVisibilityMode="VisibleWhenSelected" Width="330">                       
        <DataGrid.Columns>
            <DataGridTextColumn x:Name="dateColumn" Binding="{Binding Path=Date, StringFormat={}{0:dd/MM/yyyy}}" Header="Date"  Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT"/>
            <DataGridTextColumn x:Name="closeColumn" Binding="{Binding Path=ClosingPrice}" Header="ClosingPrice" Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT" />
            <DataGridTemplateColumn x:Name="directionColumn" Header="Direction"  Width="80" CanUserReorder="False" CanUserSort="False" >
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock x:Name="directionColumnTextBlock" Text="{Binding Path=Direction}" Width="80" FontFamily="Arial Rounded MT"/>
                        <DataTemplate.Triggers>
                            <DataTrigger Binding="{Binding Path=Direction}" Value="UP">
                                <Setter TargetName="directionColumnTextBlock" Property="Background" Value="Red" />
                            </DataTrigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>                                                                              
            <DataGridTextColumn x:Name="resultColumn" Binding="{Binding Path=Result}" Header="Result"  Width="80" CanUserReorder="False" CanUserSort="False" FontFamily="Arial Rounded MT"  />
        </DataGrid.Columns>
    </DataGrid>
于 2010-07-23T13:09:03.287 回答