Приложение WPF с несколькими элементами управления пользователя, передающими значения в MainViewModel (MVVM) - PullRequest
0 голосов
/ 04 июня 2010

У меня есть приложение wpf, которое показывает 5 различных пользовательских контролей при прохождении через систему. У каждого usercontrol есть список. Поэтому я хочу выбрать элемент и передать его обратно в MainViewModel. У меня это работает сейчас, так что я могу сохранить значение в ViewModelBase, но похоже, что моя тактика вызова пользовательских элементов управления имеет недостатки, так как я не могу соединиться с каждой отдельной ViewModel, но только с ViewModelBase. Я понимаю, где я иду не так, но мне интересно, есть ли способ сделать это, отдельно инициализируя каждый пользовательский контроль, а не только из viewModelBase, как я делаю здесь:

    private ViewModelBase _control;
    public ViewModelBase Control
    {
        get { return _control; }
        set
        {
            _control = value;
            OnPropertyChanged("Control");
        }
    } 

а потом я говорю о загруженном

     Control = new MainScreenViewModel();
     ynd = new YesNoDelegate(YesNoNavigation);
     Control.SetReturnData(ynd);
     Control.name = "MainScreen";

управление затем вызывается в xaml как

     <ContentControl  Content="{Binding Control}" Height="350" Width="525" Grid.Column="1"/>

Любая помощь будет оценена.
Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Я перешел от использования класса Messenger к использованию CommandManager, который является родным для WCF специально определяя пользовательскую RoutedUICommand затем с помощью CommandManager.RegisterClassCommandBinding в расположении или расположениях, которые необходимы для ответа на команду.

Преимущество заключается в том, что не нужно наследовать от посреднической базы Не нужно полагаться на код, который автор прекратил поддерживать (хотя он хорошо написан!) Не нужно использовать декораторы и полагаться на строки для ключа сообщения

0 голосов
/ 04 июня 2010

Взгляните на MVVMLight Messenger Class , если вы хотите установить связь между ViewModels.

Этот конкретный ответ иллюстрирует, как его использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...