C # WPF MVVM: вызов объекта - PullRequest
0 голосов
/ 31 марта 2011

У меня есть класс QuestionsFile, в котором есть вопросы, имя и т.д. ...

Теперь я создал приложение wpf, и у меня есть окно с разными страницами.Эти страницы наследуют класс BaseViewModel.Я создаю свои страницы в классе WindowViewModel (где я передаю новый объект QuestionsFile в конструктор и отправляю его через конструкторы других моделей представления):

var chooseQFVM = new ChooseQuestionsFileViewModel(this.QuestionsFile);
var showChosenQFVM = new ShowChosenQuestionsFileViewModel(this.QuestionsFile);

var pages2 = new List<WizardControlViewBaseModel>();
pages2.Add(chooseQFVM);
pages2.Add(showChosenQFVM);

pages = new ReadOnlyCollection<WizardControlViewBaseModel>(pages2);`

Все эти модели представления наследуют BaseViewModel класс, который имеет свойство QuestionsFile.

поэтому, скажем, я изменяю свойство QuestionsFile переменной chooseQFView из комбинированного списка и передаю его - то же самое свойство в классе BaseBiewModel должно быть изменено.Вот этот код свойства в классе BaseBiewModel:

public QuestionsFile QuestionsFile
    {
        get { return qfile; }
        set 
        { 
            qfile = value;
            OnPropertyChanged("QuestionsFile");

        }
    } 

Итак, я вызываю событие PropertyChanged, но когда я хочу вызвать это свойство на следующей странице и отлаживаю, оно говорит:что все свойства моего QuestionsFile равны нулю ..

это код, в котором я изменяю значение свойства QuestionsFile:

public OptionViewModel<QuestionsFile> SelectedFile
    {
        get
        {
            return selectedFile;
        }
        set
        {
            selectedFile = value;
            OnPropertyChanged("SelectedFile");
            this.QuestionsFile = value.GetValue();
        }
    }

1 Ответ

1 голос
/ 01 апреля 2011

Насколько я понимаю, на ваш взгляд, у вас есть коллекция QuestionFile с (через OptionsViewModel), которую вы выбираете одним из них через свойство SelectedFile.На данный момент вы устанавливаете выбранное свойство QuestionFile.

Это все хорошо для ChooseQuestionViewModel (который, я полагаю, содержит свойство SelectedFile).Я не уверен, что это ваша проблема, но SelectedFile не будет отражаться внутри ShowQuestionsFileViewModel, потому что теперь обе модели представления ссылаются на разные экземпляры.

Это ваша проблема?То, что вы не можете видеть изменения выбранного QuestionFile в ShowQuestionsFileViewModel?

Если это так, вам нужно будет сообщить другой модели представления, что она изменилась с помощью событий или что она ссылается на ChooseQuestionViewModel, чтобы онаможет прослушивать событие PropertyChanged, чтобы вы могли получить выбранный элемент и обновить его.

т.е.

//Ctor
public ShowQuestionsFileViewModel(ChooseQuestionViewModel chooseViewModel)
{
    _chooseViewModel = chooseViewModel;
    chooseViewModel.PropertyChanged += ChoosePropertyChanged
}

private void ChoosePropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if(e.Property == "SelectedFile")
    {
        this.SelectedFile = _chooseViewModel.SelecteFile;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...