2013-09-17 2 views
0

У меня есть UserControl, который используется для отображения двух разных видов ViewModels (оба являются в основном сеткой, отображающей данные).комплект/использование EventToCommand в зависимости состояние?

ViewModel A предназначен для отображения данных определенного типа, а при двойном щелчке он выполняет какое-либо действие для редактирования этой строки.

ViewModel B используется только для отображения других данных.

Для ViewModel А мне нужно, чтобы иметь эту простую EventToCommand из MVVM-Light

<i:Interaction.Triggers> 
     <i:EventTrigger EventName="RowDoubleClick"> 
     <cmd:EventToCommand Command="{Binding EditCommand}" /> 
     </i:EventTrigger> 
    </i:Interaction.Triggers> 

В ViewModel B, я не хочу иметь редактирования на RowDoubleClick, и даже не имеют Свойство EditCommand в ViewModel.

Итак, вопрос: могу ли я, чтобы EventToCommand применялся в соответствии с свойством Bool WithDoubleClick, которое присутствует в обеих моделях ViewModels?

ответ

0

Вы сказали, что используете MVVM Light, но в MVVM мы обычно используем один вид для каждой модели представления, поэтому вы не должны делать то, что вы предлагаете в любом случае. Однако, есть возможно. Ваша программа по-прежнему будет запущена, если в вашей модели нет EditCommand ... вы просто получите ошибку в Output Window в Visual Studio.

+0

И если вам не нравится видеть исключения в вашем окне вывода, просто добавьте EditCommand во вторую модель представления и установите для этого пустого метода в свой конструктор следующим образом: EditCommand = new RelayCommand (() => { }); Однако, как и @Sheridan, вы можете захотеть найти способ следовать шаблону One View, One View Model. –

+0

Спасибо за ваши комментарии. Я закончил с пустой «EditCommand». Я использую один вид для различных ViewModels, потому что они _almost_ одинаковы, у меня много экранов для отображения сеток данных, они отличаются столбцами в сетке и еще несколько вещей, которые настраиваются свойствами в каждой ViewModel – Ricardo

Смежные вопросы