0

我的视图中有一个数据网格,它绑定到我的视图模型中的 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;
    }
4

0 回答 0