首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存放更改实例的属性上的GridControl的BindingSource

存放更改实例的属性上的GridControl的BindingSource
EN

Stack Overflow用户
提问于 2016-05-19 15:26:26
回答 1查看 22关注 0票数 0

我有一个viewmodel对象,现在我们称之为MyVM。它包含一个名为AllDataObjects的数据对象列表(假设它的类型是MyData,它有一个List<MyEntry>属性ListOfEntries),并有一个属性CurrentSelection从它的列表中返回当前选定的数据对象。

负责更改选定项的机制工作,并将不同的MyData对象从AllDataObjects分配给CurrentSelection属性。

现在我有了一个DevExpress GridControl,它需要一个引用MyVM.CurrentSelection.ListOfEntriesDataBinding。但是,如果我对此进行设置,绑定将始终指向分配的第一个元素,因为当CurrentSelection分配了一个新的MyData对象实例时,绑定仍然只知道对旧对象的引用。

有没有一种方法可以将网格绑定到这个嵌套属性,而不必一次又一次地重置和重新初始化存储在CurrentSelecton中的相同MyData实例?

EN

Stack Overflow用户

发布于 2016-05-19 17:25:00

我设法做到了这一点,方法是让MyVM实现接口INotifyPropertyChanged,并让持有我的网格的UserControl侦听它的PropertyChanged事件。

代码语言:javascript
运行
复制
public class MyVMClass : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(String propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

    public List<MyData> AllDataObjects { get; set; }

    private MyData CurrentSelection_ { get; set; }
    public MyData CurrentSelection
    {
        get { return CurrentSelection_; }
        set
        {
            CurrentSelection_ = value;
            OnPropertyChanged(nameof(CurrentSelection));
        }
    }


    public MyVM(List<MyData> allDataObjects)
    {
        AllDataObjects = allDataObjects;
    }
}

UserControl的代码中:

代码语言:javascript
运行
复制
    public void Initialize(MyVMClass myVM)
    {
        MyVM = myVM;
        MyVM.PropertyChanged += MyVM_PropertyChanged;
        MyVM_PropertyChanged();
    }

    private void MyVM_PropertyChanged(object sender=null, PropertyChangedEventArgs e=null)
    {
        if (e == null || e.PropertyName == nameof(MyVMClass.CurrentSelection))
        {
            MyBindingSource.DataSource = MyVM.CurrentSelection.ListOfEntries;
        }
    }
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37316566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档