如何使用MVVM对文本框进行事件处理 [英] How to do Event Handling of text boxes using MVVM

查看:262
本文介绍了如何使用MVVM对文本框进行事件处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  private   void  txtUsername_LostFocus(对象发​​件人,RoutedEventArgs e)
{
string usergrouptxt = txtUsername.Text;
尝试
{
if string .IsNullOrEmpty(usergrouptxt))
{
txtUsername.BorderBrush = new SolidColorBrush(Colors.Red);
}
其他
{

}
}
catch (SqlException usrgrpexc)
{
MessageBox.Show(usrgrpexc.ToString());
}

}







我该怎么做我在MVVM中的ViewModel中的上述操作?

解决方案

轻松借助 MVVM Light Toolkit 。来自Blend SDK的S ystem.Windows.Interactivity

只需添加此命名空间:

 xmlns:i =clr-namespace:System.Windows.Interactivity; assembly = System.Windows.Interactivity
xmlns:cmd =clr-namespace:GalaSoft.MvvmLight.Command; assembly = GalaSoft.MvvmLight .Extras





然后,在你的 TextBox XAML注入下一行:

 <   textbox     x:name   =  txt1    ....   =     xmlns:x   = #unknown >  
< i:interaction.triggers xmlns:i = #unknown >
< i:eventtrigger eventname = LostFocus >
< cmd:eventtocommand command = {Binding TestCommand,< br mode = hold = /> Mode = OneWay} xmlns:cmd = #unknown >
CommandParameter ={Binding Text,
ElementName = txt1,
Mode = OneWay}
MustToggleIsEnabledValue =True/>
< < span class =code-leadattribute> / cmd:eventtocommand
> < < span class =code-leadattribute> / i:eventtrigger >
< / i:interaction.triggers >
< / textbox >


private void txtUsername_LostFocus(object sender, RoutedEventArgs e)
        {
            string usergrouptxt = txtUsername.Text;
            try
            {
                if (string.IsNullOrEmpty(usergrouptxt))
                {
                    txtUsername.BorderBrush = new SolidColorBrush(Colors.Red);
                }
                else
                {

                }
            }
            catch (SqlException usrgrpexc)
            {
                MessageBox.Show(usrgrpexc.ToString());
            }

        }




How can I do the above operation in my ViewModel in MVVM?

解决方案

Easily with help of MVVM Light Toolkit. and System.Windows.Interactivity from Blend SDK.
Just add this namespaces:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras"



and then, in your TextBox XAML inject next lines:

<textbox x:name="txt1" ....="" xmlns:x="#unknown">
    <i:interaction.triggers xmlns:i="#unknown">
        <i:eventtrigger eventname="LostFocus">
            <cmd:eventtocommand command="{Binding TestCommand,<br mode=" hold=" />                                          Mode=OneWay}" xmlns:cmd="#unknown">
               CommandParameter="{Binding Text,
                                  ElementName=txt1,
                                  Mode=OneWay}"
               MustToggleIsEnabledValue="True" />
        </cmd:eventtocommand></i:eventtrigger>
    </i:interaction.triggers>
</textbox>


这篇关于如何使用MVVM对文本框进行事件处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆