1

在尝试使用 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;
        }
}
4

1 回答 1

2

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

于 2012-11-01T22:26:57.407 回答