0

複数のdataContextを設定する方法は?ModelとViewModelがあります-たとえば、Windows.DataContextのXAMLで1つのデータコンテキストのみを記述できます

<Window.DataContext>
    <v:FacebookViewModel/>
</Window.DataContext>

次に、コンストラクターまたはボタンをクリックして、と書くことができます_faceViewModel = (FacebookViewModel)this.DataContext;。これにより、dataContextが設定されます。

私の質問:2つのViewModelがあり、ボタンをクリックするか、より良いアイデアがある場合は、2番目のViewModel TwitterViewModelのデータコンテキストを変更したいのですが、どうすればよいですか?私は今WPFを学んでいて、これは本当に新しいです...

4

1 に答える 1

0

DataContextプロパティを使用してプログラムで変更できます。より良い方法は、ViewModelのDataTemplatesを作成し、それらを必要なコンテナーに設定することだと思います(ビューモデルの外観が異なる場合)。VMの外観が同じである場合は、1つのビューモデルの代わりに異なるロジックをカプセル化することを検討する必要があるかもしれません。

class VM 
{
  private IVMImplementation manager = null;

  public VM(IVMImplementation manager) { this.manager = manager; }

  public SetManager(IVMImplementation manager) { this.manager = manager; }
}
class TwitterVMManager : IVMImplementation  {}
class FacebookVMManager : IVMImplementation  {}

datacontextを変更するよりも速く動作すると思います。

于 2012-05-22T02:52:18.083 に答える