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

Posted 欧阳小菜菜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中的控件事件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 viewmodel 中访问 mvvm 模型中的控件?

WPF 中的 MVVM - 如何提醒 ViewModel 模型中的变化......或者我应该吗?

WPF:MVVM模式下ViewModel关闭View

wpf中mvvm的Command绑定后,如何在点击按钮的时候在viewmodel里面异步执行方法。

WPF 在 MVVM 模式下实现窗口后台代码与ViewModel交互

WPF MVVM:如何将 GridViewColumn 绑定到 ViewModel-Collection?