确定Textboxes是否包含值MVVM

时间:2015-11-05 10:12:20

标签: c# wpf mvvm-light

我有一个WPF页面,其中包含多个文本框和一个搜索按钮。当按下搜索按钮时,程序需要枚举所有控件以确定是否填充了至少一个文本框。如果全部为空错误,则会显示错误。正在使用mvvm-light模式。

如何枚举MVVM下的所有文本框

2 个答案:

答案 0 :(得分:3)

有一种简单的方法可以实现目标。

您可以在此ViewModel中创建ViewModel并创建属性,这样您就可以将这些属性绑定到XAML上的TextBox,这样,ViewModel上的属性将保持文本框的值,这是一个示例。 / p>

<强> XAML

<TextBox Text="{Binding Name, Mode=TwoWay}"/>
<TextBox Text="{Binding Age, Mode=TwoWay}"/>

“Mode = TwoWay”表示只要bind属性发生变化,textBox就会自动更新。

XAML代码行为。

public MainWindow(){
        InitializeComponent();
        this.DataContext = new MainWindowViewModel();
    }

您需要设置DataContext才能绑定属性。

<强>视图模型

public class MainWindowViewModel{
    private string _name;
    public string Name{
        get{
            return _name;
        }

        set{
            _name = value;
        }
    }

    private int _age;
    public int Age{
        get{
            return _age;
        }

        set{
            _age = value;
        }
    }
}

就是这样,每当你需要检查你的TextBox是否为空时,你可以检查View Model上的属性是否为空。

答案 1 :(得分:0)

按照此逻辑枚举控件并告知用户其状态。

  1. 将视图上的每个控件绑定到视图模型上的各个属性。
  2. 在ViewModel上创建一个方法,可以调用AreAllBlank(?)来枚举每个属性,检查它们是否为空。如果它们都为空白,请返回true,否则返回false
  3. 在视图中,对于按下按钮的代码隐藏操作,请调用在步骤2中创建的方法。如果结果显示它们的控件没有带有相应消息的数据调用MessageBox.Show()