例:WPFリストボックスたListCollectionView匿名型ナビゲーション問題
フレームワーク:WPF ビジュアルコントロール:CodePlexの
からデータグリッドpublic Window()
{
InitializeComponent();
var listView = new ListCollectionView(
new[]
{
new
{
Bool = false,
Str = "Value1"
},
new
{
Bool = false,
Str = "Value1"
}
}.ToList());
dataGrid.ItemsSource = listView;
listView.MoveCurrentToFirst();
listView.MoveCurrentToNext();
}
値を変更した場合、データグリッドカーソルが、1に位置を変えません匿名型の一つで:
var listView = new ListCollectionView(
new[]
{
new
{
Bool = false,
Str = "Value1"
},
new
{
Bool = false,
Str = "Value2"
}
}.ToList());
カーソルが正しく動作し、SelectedIndexを= 1
私はそれが匿名オブジェクトのオーバーライドGetHashCode()のために起こると思います 匿名オブジェクトGetHashCode:すべてのフィールドの合計。匿名オブジェクトの2つの異なるインスタンスでフィールドが同じ場合、GetHashCode()は両方のインスタンスで同じ値を返します。
DataGridはGetHashCodeを使用してオブジェクトを内部的に比較し、SelectedPositionを変更しないことがあります。
誰もこの問題を回避する方法を知っていますか?
public class ViewItemHodler
{
public object ViewItem { get; set; }
}
おかげ