Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MVVM中处理事件_C#_Wpf_Events_Mvvm - Fatal编程技术网

C# 如何在MVVM中处理事件

C# 如何在MVVM中处理事件,c#,wpf,events,mvvm,C#,Wpf,Events,Mvvm,我是MVVM的新手。我只是学习这个模式,并希望在我的项目中使用它。我已经了解了这种模式的工作原理,并学会了如何使用命令。但我对如何处理另一个控件的事件有疑问,例如ListBox SelectionChanged事件。ListBox没有命令属性,您通常不需要这样做。例如,您可以将列表框的SelectedItem属性绑定到视图模型上的属性: <ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCus

我是MVVM的新手。我只是学习这个模式,并希望在我的项目中使用它。我已经了解了这种模式的工作原理,并学会了如何使用命令。但我对如何处理另一个控件的事件有疑问,例如ListBox SelectionChanged事件。ListBox没有命令属性

,您通常不需要这样做。例如,您可以将
列表框
SelectedItem
属性绑定到视图模型上的属性:

<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/>

这不仅允许您访问视图模型中的选定客户,还允许您的视图模型通过设置属性本身来指定选定客户


还有其他技术可以“避免”直接处理代码中的事件。例如,附加行为。但是,如果代码仅与视图有关,并且使代码更简单,则不应害怕直接处理事件。

要向控件添加命令属性,它必须从ICommandSource继承。
检查post,看看它是如何完成的

BookLibrarray应用程序显示了如何在模型视图模型(MVVM)设计的应用程序中侦听WPF事件。它允许用户选择多本书,以便他可以一次删除所有的书。参见班级图书库。演示文稿。视图。图书视图。

有趣的想法。例如,我想处理DataGrid上的鼠标右键单击事件。在这种情况下,我必须在代码后面编写处理程序,还是必须使用附加的bahavior?@Polaris。看看外面的mvvm框架(cinch,mvvm light…)。您将发现类似EventToCommand Behavior的实现,您可以在其中将事件绑定到命令。正如kent所说:在编写与视图相关的内容时,请随意使用codebehing:)例如,在网格或列表框+1中查看所选项目,以便在事件仅影响视图层时获得有关处理事件的注释。很多人都忘记了这一点…我还没有使用它,但您可以使用CollectionView或CollectionViewSource在各种集合类型控件上启用MVVM。