Я новичок в MVVM и Prism. У меня есть ниже ViewModelMVVM Prism WPF - Настройка публичной собственности и SetProperty
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; }
}
}
Я пытаюсь установить Анкету из другого ViewModel и обновить WPF UI с заданным значением из другого ViewModel. Но, к сожалению, это не сработает. Ниже приведен код для другой модели. Я установил свойство в «private void OnSubmit (object obj)», но когда я запускаю приложение и нажимаю submit, пользовательский интерфейс не получает обновления. Кто-нибудь теперь, что еще нужно добавить для этой работы? Если я установил «this.QuestionnaireViewModel.Questionnaire.Age = 32;» внутри «public MainWindowViewModel()», тогда пользовательский интерфейс обновляется во время выполнения, но с OnSubmit не работает. Пожалуйста помоги.
using System.Diagnostics;
using System.Text;
using System.Windows.Input;
using BasicMVVMQuickstart_Desktop.Model;
using Microsoft.Practices.Prism.Commands;
using Microsoft.Practices.Prism.Mvvm;
namespace BasicMVVMQuickstart_Desktop.ViewModels
{
public class MainWindowViewModel : BindableBase
{
public MainWindowViewModel()
{
this.SubmitCommand = new DelegateCommand<object>(this.OnSubmit);
this.QuestionnaireViewModel = new QuestionnaireViewModel();
this.ResetCommand = new DelegateCommand(this.OnReset);
}
public ICommand SubmitCommand { get; private set; }
public ICommand ResetCommand { get; private set; }
public QuestionnaireViewModel QuestionnaireViewModel { get; set; }
private void OnSubmit(object obj)
{
Debug.WriteLine(this.BuildResultString());
this.QuestionnaireViewModel.Questionnaire.Age = 32;
}
private void OnReset()
{
this.QuestionnaireViewModel.Questionnaire = new Questionnaire();
}
private string BuildResultString()
{
StringBuilder builder = new StringBuilder();
builder.Append("Name: ");
builder.Append(this.QuestionnaireViewModel.Questionnaire.Name);
builder.Append("\nAge: ");
builder.Append(this.QuestionnaireViewModel.Questionnaire.Age);
builder.Append("\nQuestion 1: ");
builder.Append(this.QuestionnaireViewModel.Questionnaire.Quest);
builder.Append("\nQuestion 2: ");
builder.Append(this.QuestionnaireViewModel.Questionnaire.FavoriteColor);
return builder.ToString();
}
}
}
Кажется, что ваш вопрос не имеет ничего общего с PRISM. Покажите свою соответствующую разметку XAML с привязкой данных. – dymanoid