У меня есть вопрос о DataGrid в WPF .NET 4.
Вот код XAML с DataGrid:
<DataGrid Name="m_DataGrid">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Name}">
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True" >
<Setter Property="Background" Value="Gray" />
<Setter Property="Foreground" Value="White" />
<Setter Property="BorderBrush" Value="Gray" />
</Trigger>
<DataTrigger Binding="{Binding Path=IsRed}" Value="True">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
А в коде окна есть методы:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
for (int i = 0; i < 100; i++)
{
m_DataGrid.Items.Add(new MyItem(string.Format("Item {0}", i)));
}
}
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
e.Handled = true;
((MyItem)m_DataGrid.SelectedItem).IsRed = !((MyItem)m_DataGrid.SelectedItem).IsRed;
m_DataGrid.SelectedIndex++;
m_DataGrid.Items.Refresh();
}
}
А вот и код класса MyItem:
public class MyItem
{
public string Name { get; set; }
public bool IsRed { get; set; }
public MyItem(string _Name)
{
Name = _Name;
IsRed = false;
}
}
Проблема в том, что я должен использовать метод m_DataGrid.Items.Refresh (); показать элементы в красном цвете. Но когда у меня есть например. 100 пунктов этот метод слишком медленный. Поэтому, когда я удерживаю пробел, элементы отмечаются красным цветом очень медленно. Как сделать это лучше и элегантнее? Как изменить цвет элемента без обновления?
Спасибо за ваши ответы и советы.