我對DataGrid的quastion在WPF .NET更新項目4如何快速在DataGrid中(WPF .NET4)
這裏是一個DataGrid的XAML代碼:
<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個項目這個方法太慢了。因此,當我按住空格鍵時,項目會以非常緩慢的紅色標記。如何以更好更優雅的方式做到這一點?如何更改項目的顏色,而不刷新方法? 感謝您的回答和提示。
BIG THX ...這解決了我的問題;) – MichalDawn 2012-01-18 20:10:59