2011-12-22 3 views
-1

Я использую datagrid Xceed для WPF. Сегодня я пытался изменить фон всей строки, если один из ее столбцов «SA» имеет некоторое значение или не имеет значения null. Я написал следующий фрагмент кода в XAML с функцией преобразователя в коде позади:WPF Xceed datagrid - datatrigger на содержимое ячейки заставляет меня потерять данные при загрузке ... однако re

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

Что я делаю неправильно?

ответ

2

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

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

Чтобы заполнить цвет в столбце use this или следующий код:

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