のDataGrid(WPF .NET4)に更新項目を高速にどの4.ここで私はWPF .NETでのDataGridについてquastionを持って
は、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>
、ウィンドウ内の方法がありますコード:
public class MyItem
{
public string Name { get; set; }
public bool IsRed { get; set; }
public MyItem(string _Name)
{
Name = _Name;
IsRed = false;
}
}
:
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クラスコードであります
問題は、メソッドm_DataGrid.Items.Refresh()を使用する必要があることです。アイテムを赤色で表示します。しかし、私が例えば持っているとき。 100アイテムは、このメソッドが遅すぎます。だから私がスペース・バーを押し下げると、アイテムは非常にゆっくりと赤色でマークされます。どのようにより良い、よりエレガントな方法でこれを行うには? Refreshメソッドを使用せずにアイテムの色を変更する方法は? ご回答いただきありがとうございます。
大きなTHX ...これは私の問題を解決する;) – MichalDawn