1

我使用 MVVM。我在 xaml 中有一个带有网格的 ViewA 和一个 ViewModelA。在 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。但它不起作用。

编辑2:

我尝试了这个解决方案,但它对我不起作用:(将 MouseDragElementBehavior 与 ItemsControl 和 Canvas 一起使用

4

1 回答 1

0

将您的 Grid 添加一个 ContentControl 并将其内容绑定到您的第二个视图。

这是一个带有 UserControl 的示例。

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

代码即时视图模型:

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