0

DBでレコードを作成するために使用され、後でIDを渡すことによって編集されるフォーム(XAML)を作成する必要があります。DBから入力されるフォームにコンボボックスがあり、テキストボックスもあります。ADDとEDITのXAMLを複製して、コードを可能な限り再利用しようとはしません。MVVMでこれを達成するにはどうすればよいですか?MVVMのベストプラクティスを使用したいと思います。誰かが素晴らしいと思われる統計ポイントを特権化することができれば。

4

2 に答える 2

0

これは非常に一般的なシナリオです。

特定の型のオブジェクト/インスタンスを受け取り、そのオブジェクトのプロパティを編集できるXAMLコントロール/ページを作成できます。

Editの場合、データベースから事前設定されたオブジェクトを渡します。

Createの場合、型の新しいインスタンスを渡します。

呼び出し元/ホストは、編集コントロールに渡されるオブジェクトの種類を認識します。

そのため、編集コントロールによってそのオブジェクトが返された場合、データベースへの追加/更新は、呼び出し元/ホストによって処理されます。

于 2012-08-11T18:40:38.097 に答える
0

さまざまな編集モード (追加、編集など) を提供する Silverlight Toolkit の DataForm を使用できます。

アプローチの概要は次のとおりです。2 つのビュー モデルが必要です。1 つはデータ用、もう 1 つはフォーム用です。

// FormViewModel.cs
public class FormViewModel
{
   public Customer DataItem {get; set;}

   // --------- perform action ---------------
   private ICommand _PerformActionCommand = new DelegateCommand(PerformAction);
   public ICommand PerformActionCommand {
      get { return _PerformActionCommand; }
   }

   public void PerformAction()       
   {
      if (Customer.IsNew)
          InsertCustomer(Customer);
      else
          SaveCustomer(Customer);     
   }

   // ------ Button Label --------------
   public string ButtonLabel {
      get {
         return (Customer.IsNew)? "Add": "Update";
      }
   }
}

フォームは次のとおりです。

<UserControl.Resources>
    <local:FormViewModel x:Key="formVM" />
</UserControl.Resources>
<Button 
  Content="{Binding Path=ButtonLabel
                    Source={StaticResource formVM}}"
  Command="{Binding Path=PerformActionCommand, 
                    Source={StaticResource formVM}}" />
于 2012-08-21T22:07:20.323 に答える