0

我正在为 WPF使用Xceed数据网格。今天我试图改变整行的背景,如果它的列“SA”之一具有某个值或不为空。我在XAML中编写了以下代码,并在后面的代码中使用了转换器函数:

<xcdg:DataGridControl.Resources>
    <Style TargetType="{x:Type xcdg:DataRow}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Converter={StaticResource newConverter}, Path=Cells[SA].Content}" Value="True">
                <Setter Property="Background" Value="LightGreen" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</xcdg:DataGridControl.Resources>

令我惊讶的是,当我第一次加载网格时,SA 列中的数据无处可见。但是,一旦我向下滚动一点,直到应该包含该列数据的行不可见,然后当我再次向上滚动以查看该行时,我可以看到该列中的值以及背景变了。

我究竟做错了什么?

4

1 回答 1

2

使用简单的绑定并避免转换器/模板

<TextBlock Text="{Binding}"></TextBlock>

要在列中填充颜色,请使用此代码或以下代码:

<xcdg:Column Title="Unit Price" FieldName="UnitPrice" ReadOnly="True">
    <xcdg:Column.CellContentTemplate>
        <DataTemplate>
            <DockPanel LastChildFill="false" x:Name="UnitPrice">
                <TextBlock Text="{Binding}"></TextBlock>
                <Image x:Name="img" Width="16" Height="16" DockPanel.Dock="Right"
                       Margin="2,0,0,0" Visibility="Collapsed"
                       ToolTip="Unit Price is Undefined." VerticalAlignment="Center"
                       HorizontalAlignment="Left" />
            </DockPanel>
            <DataTemplate.Triggers>
                <DataTrigger Binding="{Binding}" Value="0.00">
                    <Setter TargetName="img" Property="Visibility"  Value="Visible" />
                    <Setter TargetName="UnitPrice" Property="Background"  Value="Pink" />

                </DataTrigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </xcdg:Column.CellContentTemplate>
</xcdg:Column>
于 2012-02-17T11:56:00.987 回答