WPF Xceed datagrid - datatrigger на содержимое ячейки заставляет меня терять данные о нагрузке ... однако - PullRequest
0 голосов
/ 22 декабря 2011

Я использую сетку данных Xceed для WPF.Сегодня я пытался изменить фон всей строки, если один из столбцов «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 нигде не видно.Однако, как только я прокручиваю немного вниз, до тех пор, пока та строка, в которой должны быть данные для столбца, не видна, а затем, когда я снова прокручиваю вверх, чтобы увидеть эту строку, я могу увидеть значение в этом столбце, а такжефон изменился.

Что я делаю не так?

1 Ответ

2 голосов
/ 17 февраля 2012

Используйте простую привязку и избегайте конвертера / шаблона

<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>
...