0

こんにちは、WPF と Devexpress を使用しています。私はC#の世界に不慣れで、MVVMの経験がありません。MVVM を学ぶためにさまざまなビデオを見てきました。でもどれもMVVMの基本(なぜ効率がいいのかなど)に関係するので、WPFでコードを書いてみました。私のコードには 3 つのボタンがあります。新しいデータの追加、データの編集、グリッドの更新です。各ボタンには、その機能を定義するクリック イベントがあります。この単純で基本的な WPF コードを MVVM フレームワークに変換したいと考えています。MVVMへの変換について誰かが私を案内してくれますか?

     void EditRow(int focRowHand, Entities a)
        {

        Name nametext = grid.GetRow(focRowHand) as Name;

        try
            {
            if (nametext.Name1 != string.Empty)
                {

                update_id = nametext.ID;
                txtName2.Text = update_text = nametext.Name;

                if (Panel3.Visibility == System.Windows.Visibility.Visible)
                    {
                    Panel1.Visibility = System.Windows.Visibility.Visible;
                    Panel3.Visibility = System.Windows.Visibility.Collapsed;
                    }

                else
                    {
                    Panel1.Visibility = System.Windows.Visibility.Collapsed;
                    Panel3.Visibility = System.Windows.Visibility.Visible;
                    }
                }
            }
        catch (Exception err)
            {
            DXMessageBox.Show(err.StackTrace);

            }

        }

        private void Button1_Copy_Click(object sender, RoutedEventArgs e)
            {

            if (view.FocusedRowHandle == 0)
                {
                DXMessageBox.Show("Please Select any Item From Grid List");
                }
            else
                {
                try
                    {
                    int FocRowHand = view.FocusedRowHandle;
                    Entities a = new Entities();

                    if (grid.IsGroupRowHandle(FocRowHand))
                        {
                        int childCount = grid.GetChildRowCount(FocRowHand);
                        for (int i = 0; i < childCount; i++)
                            {
                            int childHandle = grid.GetChildRowHandle(FocRowHand, i);
                            EditRow(childHandle, a);
                            }
                        }
                    else
                        {
                        EditRow(FocRowHand, a);
                        }

                    }
                catch (Exception ee)
                    {
                    DXMessageBox.Show(ee.StackTrace);
                    }
                }

            }

挿入

    private void Insertion()
  {
  if (txtName.Text != string.Empty)
      {
      if (DXMessageBox.Show("Are You Sure, you Want to Insert?", "Insert Item-Confirmation", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
          {
          try
              {

                  Entities dbContext = new Entities();
                  Name name = new Name();
                  name.my_name = txtName.Text;
                  dbContext.Names.Add(name);
                  dbContext.SaveChanges();
                  txtName.Text = null;
                  Refresh();
                  }

          catch (Exception err)
              {
              DXMessageBox.Show(err.StackTrace);

              }
          }
      else
          txtName.Text = null;
      }

  }

私の質問が明確でない場合、またはより多くの情報が必要な場合は、私に尋ねてください。ありがとうございました :)

4

2 に答える 2

1

まず、ViewModel クラスを作成し、各状況 (追加、編集など) に対応するメソッドを作成します。次に、イベント ハンドラーで関連する ViewModel 関数を呼び出すだけです。コードを見ると、 などの状態情報を渡す必要がありますPanel3.Visibility

これが完了したら、関連するプロパティを VM に渡す代わりにバインドすることで、完全な MVVM パターンへの設計の移行を開始できます。

最も簡単な方法は挿入のようです。完全に MVVM にするにはtxtName、プロパティにバインドする必要があります。私はそこから始めます。

于 2013-08-26T12:41:37.977 に答える