[学习记号 - MVVM] 在ViewModel里设置Textbox焦点(focus)

本文探讨了为何在ViewModel中设置TextBox焦点的场景,例如在登录验证用户名后自动聚焦密码输入框。通过创建FocusBehavior并绑定ViewModel的UserNameValidated属性,实现了业务逻辑完成后触发UI焦点设置。详细实现包括Behavior的创建、ViewModel属性的添加以及XAML的绑定。
摘要由CSDN通过智能技术生成
问题:

设置输入框焦点Textbox.focus()本应该是View的事,为什么要放在ViewModel里设置?

情景假设:

登录模块中,用户输入用户名后,调用WCFRiaService异步验证用户名,如果用户存在,密码输入框自动获得焦点,否则出现指定错误信息。在此情景中,用户验证的业务逻辑应该在ViewModel里面,当业务完成且成功后需要就会涉及到设置Textbox焦点(focus)。

分析:

Textbox没有IsFocused属性,在此种情况下,可按以下思路考虑:首先加一个FocusBehavior,然后把ViewModel的属性UserNameValidated绑定到Textbox,当业务逻辑完成且成功了需要设置Textbox焦点(focus)时,用这个属性通知UI,同时用Behavior自动设置为聚焦(focus)。

 

实现:

1. 加一个Behavior,继承Behavior<FrameworkElement>

using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;
namespace TestSLApplication
{
    public class PasswordboxFocusBehavior : ControlFocusBehaviorBase<PasswordB
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值