首页 > 代码库 > WPF MVVM 如何在ViewModel中操作View中的控件事件

WPF MVVM 如何在ViewModel中操作View中的控件事件

(在学习Wpf的时候,做一个小例子,想在TextBox改变后,检验合法性,并弹出提示。在找了很多贴后,发现这个小例子,抄袭过来,仅供参考。)

 

虽然说MVVM模式下不建议在Viewmodel层中操控View层中控件,但是在某些情况下,比如想要得到某个事件的参数,在Viewmodel层中不太方便实现,这时候就可以用下面的方法了。

在XAML中

1、引用组件并设置

xmlns:Interaction="http://schemas.microsoft.com/expression/2010/interactions"

xmlns:Interactivity="http://schemas.microsoft.com/expression/2010/interactivity"

 

2、DataContext设置

xmlns:VM="clr-namespace:MVVM_.ViewModel"

<Window.DataContext>        

<VM:MainWindowViewModel /> < /Window.DataContext>

 

3、事件触发,以窗口的大小改变事件为例  SizeChanged

<Interactivity:Interaction.Triggers>        

<Interactivity:EventTrigger EventName="SizeChanged">            

<Interaction:CallMethodAction TargetObject="{Binding}" MethodName="SizeChangedCommand"/>        

</Interactivity:EventTrigger>

< /Interactivity:Interaction.Triggers>

 

在Viewmodel中

public class MainWindowViewModel

 {

  public void SizeChangedCommand(object obj, SizeChangedEventArgs e){}

}

 

正在研究是否适合自己所用...

WPF MVVM 如何在ViewModel中操作View中的控件事件