WPF利用委托与事件实现VM对View中控件的调用
来源:互联网 发布:php小偷程序破解 编辑:程序博客网 时间:2024/06/05 19:12
WPF结合MVVM模式,可以实现界面与代码的完全分离,非常便于开发与维护,但对于某些特定需求,例如TextBox需要Focus获得光标,或者全选其中的文本,这时候就比较难了,因为VM中完全拿不到控件对象,也很难调用Focus()与SelectAll()方法,但也不是完全不可以,有一种利用委托与事件实现的方法,不知道是否有背MVVM分离思想,具体方法如下:
View.xaml:
<TextBox Name="InputBox" Text="{Binding InputStr}"/>
View.xaml.cs:
public partial class MainView : UserControl { public MainView() { InitializeComponent(); this.Loaded += MainView_Loaded; } private void MainView_Loaded(object sender, RoutedEventArgs e) { InputBox.Focus(); InputBox.SelectAll(); var vm = DataContext as MainViewModel; vm.ControlFocusEvent += View_ControlFocus; } private void View_ControlFocus(string controlName) { switch (controlName) { case "InputBox": InputBox.Focus(); InputBox.SelectAll(); break; default: break; } }}
VM:
public delegate void ControlFocusHandler(string controlName);public event ControlFocusHandler ControlFocusEvent;public void Focus(){ ControlFocusEvent.Invoke("InputBox");}
阅读全文
0 0
- WPF利用委托与事件实现VM对View中控件的调用
- 利用委托来实现用户控件中方法的相互调用
- 在用户控件中如何调用主页面的事件之事件委托
- 自定义的view中控件的点击事件实现
- 委托与事件的应用---翻页控件
- C#控件的委托与事件浅析
- Asp.net利用事件委托,实现用户控件中的行为触发所在页面的处理函数
- 我对委托与事件的理解
- 我对委托与事件的理解
- C# WPF MVVM 实战 – 5- 用绑定,通过 VM 设置 View 的控件焦点
- 有效利用ASP.NET用户控件的事件委托
- 事件冒泡和事件委托的共鸣与相互利用
- 委托 创建 调用 多播委托 事件 委托与事件的区别
- 利用VB实现对IE的调用与控制
- 利用VB实现对IE的调用与控制
- 对事件与委托的理解(1) 使用事件
- 对事件与委托的理解(2) 引发事件
- 对事件与委托的理解(3) 事件示例
- 配置文件中,字符串占位符替换
- gdb可以调试keil生成的可执行文件吗?
- 23种设计模式(1)-单例模式
- Python的两种主要实现
- JS开发中的一些小技巧和方法
- WPF利用委托与事件实现VM对View中控件的调用
- caffe编译
- 轮播插件
- go编程:浅析go程序初始化顺序
- 数据降维、PCA——基于鸢尾花数据集
- Nginx相关配置简单说明
- Linux发行版安装软件选择:编译、软件包or容器?
- 单例类
- 如何免费获取windows10开发者账户(个人)