我的视图中有一个数据网格,它绑定到我的视图模型中的 ObservableCollection,我遇到的问题是,在我以编程方式向我的 ObservableCollection 添加一个新项目后,它出现在数据网格中但是我“可以和不能”选择它,我知道这听起来有点古怪,但请耐心等待。在代码中,它类似于:
<DataGrid Grid.Column="0" AutoGenerateColumns="False" ItemsSource="{Binding Path=MyList} SelectedValue{Binding Path=SelectedMyItem}... >
</Datagrid>
然后在我的视图模型中:
private ObservableCollection<MyType> myList;
public ObservableCollection<MyType> MyList { get { return myList;} }
privte void AddItem(MyType item)
{
myList.Add(item)
}
public MyType SelectedMyItem {get;set;}
现在发生的情况是 Datarid 得到更新,新项目出现在网格中。但是,当我尝试选择它时,网格会突出显示列表中的前一个项目,但黑色边框(所选项目获得)出现在新项目周围。我的 SelectedValue Binding 也设置为新项目。我还创建了一个上下文菜单,允许用户删除项目,当我右键单击并尝试删除新添加的项目时,它会删除列表中的前一个项目。
但是,当发生这种情况时,我就可以正确选择新项目。所以我猜我需要刷新我假设的数据网格(请注意,如果我为 MyList 触发 INotifyPropertyChanged,那么理智的事情仍然会发生)
编辑:
public override bool Equals(object obj)
{
var o = obj as MyType;
if (o == null)
return false;
return o.MyTypeId == this.MyTypeId;
}