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的Command绑定后,如何在点击按钮的时候在viewmodel里面异步执行方法。