首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >访问父ViewModel中的ViewModel属性

访问父ViewModel中的ViewModel属性
EN

Stack Overflow用户
提问于 2017-05-22 13:09:43
回答 1查看 420关注 0票数 0

我使用这种技术在视图之间导航:https://social.technet.microsoft.com/wiki/contents/articles/30898.simple-navigation-technique-in-wpf-using-mvvm.aspx

我将带有菜单按钮的主ViewModel绑定到SelectedViewModel属性更改命令:

代码语言:javascript
运行
复制
class MainViewModel : INotifyPropertyChanged 
{
    public ICommand SomeViewCommand { get; set; }
    public ICommand OtherViewCommand { get; set; }
    private object selectedViewModel;
    public event PropertyChangedEventHandler PropertyChanged;

    public object SelectedViewModel
    {
        get { return selectedViewModel; }
        set { selectedViewModel = value; OnPropertyChanged("SelectedViewModel"); }
    }

    public MainViewModel()
    {
        SomeViewCommand = new RelayCommand<object, object>(null, (object o) => OpenSomeView());
        OtherViewCommand = new RelayCommand<object, object>(null, (object o) => OpenOtherView());
    }

    private void OpenSomeView()
    {
       SelectedViewModel = new SomeViewModel();
    }

    private void OpenOtherView(object obj)
    {
       if(SelectedViewModel != null && SelectedViewModel.GetType() == typeof(SomeViewModel))
       {
          SomeViewModel s = (SomeViewModel)SelectedViewModel;

          // always 0
          if (s.NumberOfChanges > 0)
          {
             MessageBox.Show("test", "Error");
          }

          // SelectedViewModel = new OtherViewModel(); after confirmation dialog
       }
       else
          SelectedViewModel = new OtherViewModel();
    }

    private void OnPropertyChanged(string propName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propName));
        }
    }

}

如果我在SomeView中,我想在切换到OtherView之前检查它的属性(更改次数),并向用户显示一个确认对话框以确认他们的操作。我需要当前值,但是任何属性似乎都有它的初始化值。为什么?

做这件事最干净的方式是什么?我知道这可以通过将属性设置为静态来完成,但这对我来说似乎很脏。

EN

回答 1

Stack Overflow用户

发布于 2017-05-22 14:16:44

在OnPropertyChanged方法中,您可以设置NumberOfChanges。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44105035

复制
相关文章

相似问题

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