1

私はMVVMを使用しています。xaml のグリッドと ViewModelA を持つ ViewA があります。ViewModelA には、ボタンのクリックで呼び出される次のようなメソッドがあります。

public void ButtonClickMethod()
{
    ViewB viewB = new ViewB();
    viewB.DataContext = new ViewBViewModel();
}

作成したすべての viewB を ViewA のグリッドに追加して、そこに表示するにはどうすればよいですか? それとも私の解決策は一般的に間違っていますか?

編集 :

ObservableCollection<ViewB>ViewModelA で、ViewA xaml の変更を通知する を使用しました。

<ItemsControl ItemsSource="{Binding ObservableCollection<ViewB>}" />

唯一の問題は、ItemControl に表示される ViewB がドラッグ可能であることです。したがって、エクスプレッションブレンドを使用しました

Interaction.GetBehaviors(ViewB).Add(new MouseDragElementBehavior() { });

新しいViewBを作成するとき。しかし、うまくいきません。

EDIT2:

私はこの解決策を試しましたが、うまくいきません:( ItemsControl と Canvas で MouseDragElementBehavior を使用する

4

1 に答える 1

0

グリッドにContentControlを追加し、そのコンテンツを2番目のビューにバインドします。

これがUserControlの例です。

<ContentControl Grid.Column="0" Margin="5" Content="{Binding SecondView}"/>

コードimViewModel:

private UserControl secondView;
public UserControl SecondView
{
  get
  {
    return secondView;
  }
  set
  {
    this.SetProperty(ref secondView,value);
  }
}
于 2012-11-02T11:49:32.967 に答える