在尝试使用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;
}
}
答案 0 :(得分:2)
这不是真正的MVVM方法。视图模型不应包含对视图的任何引用,但它应表示视图逻辑。同样,视图应包含尽可能少的视图逻辑。您应该能够通过结合使用数据和命令绑定来实现这种分离。将视图中的控件绑定到视图模型的数据属性。从视图绑定到视图模型上的命令以调用视图逻辑。视图模型对数据而非UI控件进行操作。 ui控件通过数据绑定从视图模型更新。重点是将UI控件与视图逻辑分开。