1

WPFでMVVMをフォローしようとしたときに、テスト用のコードをどこに配置すればよいかわからない場合がありました。btnReset_ClickメソッドUIコマンドのすべての行は、ビューモデルに属しているかどうかはわかりませんが、コードをコードの後ろに置きたくありません。私が考えた2つのオプションをリストアップしましたが、別の解決策も受け入れています。

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 に答える