MVVM Prism WPF - 设置公共属性和SetProperty

时间:2015-09-05 01:05:16

标签: c# wpf mvvm prism

我是MVVM和Prism的新手。我有以下ViewModel

Save()

我正在尝试从另一个viewmodel设置Questionnaire,并使用另一个viewmodel中的设置值更新WPF UI。但不幸的是它不起作用。下面是另一个viewmodel的代码。我在" private void OnSubmit(object obj)",但是当我运行应用程序并按下提交时,UI不会得到更新。现在还有人需要为这项工作添加什么吗?如果我设置" this.QuestionnaireViewModel.Questionnaire.Age = 32;"内部"公共MainWindowViewModel()" ,然后UI在运行时更新,但OnSubmit不起作用。请帮忙。

    using System.Collections.Generic;
using BasicMVVMQuickstart_Desktop.Model;
using Microsoft.Practices.Prism.Mvvm;

namespace BasicMVVMQuickstart_Desktop.ViewModels
{
    public class QuestionnaireViewModel : BindableBase
    {
        private Questionnaire questionnaire;

        public QuestionnaireViewModel()
        {
            this.Questionnaire = new Questionnaire();
            this.AllColors = new[] { "Red", "Blue", "Green" };

        }

        public Questionnaire Questionnaire
        {
            get { return this.questionnaire; }
            set { 
                SetProperty(ref this.questionnaire, value);


            }
        }

        public IEnumerable<string> AllColors { get; private set; }

    }
}

1 个答案:

答案 0 :(得分:2)

在代码中更改Age属性时:

this.QuestionnaireViewModel.Questionnaire.Age = 32;

您更改问卷的属性,但不更改QuestionnaireViewModel的属性。因此,您需要从BindableBase继承您的Questionnaire类并为Age属性创建类似的代码:

private int _age;
public int Age
    {
        get { return _age; }
        set { SetProperty(ref _age, value); }
    }