应用程序测试放置事件的最佳位置

时间:2012-11-01 21:36:00

标签: c# wpf mvvm

在尝试使用WPF跟踪MVVM时,我遇到了一个案例,我不知道在哪里放置代码进行测试。 btnReset_Click方法UI命令中的所有行,所以我不知道它们是否属于视图模型,但我也不想将代码放在我的代码中。我列出了我想到的两个选项,但我也对另一个解决方案持开放态度。

Public class  Main : Window
    {
      private void btnReset_Click(object sender, RoutedEventArgs e)
            {
                DynamicStackPanel.Children.Clear();
                controls.Clear();
                txtUsername.Text = string.Empty;
                txtPassword.Text = string.Empty;
                txtResponse.Text = string.Empty;
                cbxTestEnvironment.SelectedValue = string.Empty;
                cbxOperation.SelectedItem = null;
                cbxTestEnvironment.SelectedItem = null;
            }
    }

public class MainViewModel : DependencyObject
    {

    public MainViewModel : DependancyObject
    {
          public MainViewModel(UtilityMain win)
        {
          win.btnReset.Click +=btnReset_Click;

        }



 private void btnReset_Click(object sender, RoutedEventArgs e)
        {
            DynamicStackPanel.Children.Clear();
            controls.Clear();
            txtUsername.Text = string.Empty;
            txtPassword.Text = string.Empty;
            txtResponse.Text = string.Empty;
            cbxTestEnvironment.SelectedValue = string.Empty;
            cbxOperation.SelectedItem = null;
            cbxTestEnvironment.SelectedItem = null;
        }
}

1 个答案:

答案 0 :(得分:2)

这不是真正的MVVM方法。视图模型不应包含对视图的任何引用,但它应表示视图逻辑。同样,视图应包含尽可能少的视图逻辑。您应该能够通过结合使用数据和命令绑定来实现这种分离。将视图中的控件绑定到视图模型的数据属性。从视图绑定到视图模型上的命令以调用视图逻辑。视图模型对数据而非UI控件进行操作。 ui控件通过数据绑定从视图模型更新。重点是将UI控件与视图逻辑分开。