让我们说我有代码示例:
<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在哪些项目上是正确的? 谢谢!
答案 0 :(得分:0)
这取决于您询问的人,并且可能会有所不同。有人可能会说它不尊重MVVM,因为项目选择方面没有反映在您的视图模型中。
但是我认为可以归结为应用程序是否认为SelectedItems
是影响应用程序行为的状态,而不是过渡状态,以帮助提交该操作的特定项目。
认为在MVVM中,您应该能够仅通过与VM进行交互来模拟视图上可能发生的所有可能的逻辑交互(想象您要针对跳过该视图的VM编写测试,并且VM应该准确地代表什么是视图状态)。
例如,如果您有一个计时器,如果用户在指定的时间内未选择任何内容,它将向用户显示提示,则您不能再假设项目选择可以跳过VM。