Является ли передача CommandParameter вместе с Command хорошей практикой MVVM? - PullRequest
0 голосов
/ 20 февраля 2019

Допустим, у меня есть пример кода:

<ListView 
   ItemsSource="{Binding ConstructCollection}"                 
   x:Name="MyListView">          
</ListView>

<Button Width="45" Height="25"
        Content="Save"
        Command="{Binding SaveCommand}"
        CommandParameter="{Binding ElementName=MyListView, Path=SelectedItems}"/>

Таким образом, очень легко получить все выбранные объекты в ListView при нажатии кнопки, но не нарушает ли это принципы MVVM?Разве я не должен создавать определенный объект с IsSelectedProperty, затем связывать ListView ItemsSource с коллекцией этих объектов, а затем по нажатию кнопки просто циклически проходить по этой коллекции, чтобы увидеть, для каких элементов IsSelectedProperty имеет значение true?Спасибо!

1 Ответ

0 голосов
/ 20 февраля 2019

Это зависит и может варьироваться в зависимости от того, кого вы спрашиваете.Некоторые могут возразить, что это не относится к MVVM, потому что аспект выбора элементов не отражен в вашей модели представления.

Но я думаю, что все сводится к тому, считает ли приложение SelectedItems состоянием, которое влияет на поведение приложения ине переходное состояние в представлении, помогающее отправлять определенные элементы для действия.

Подумайте, что в MVVM вы должны иметь возможность моделировать все возможные логические взаимодействия, которые могут происходить в представлении, взаимодействуя только с ВМ (представьте, что выпишем тест для виртуальной машины, пропуская представление, и виртуальная машина должна точно представлять, каково состояние представления).

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

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