通过命令创建新的ui元素

本文关键字:ui 元素 创建 命令 | 更新日期: 2023-09-27 18:04:12

是否有简单的方法来做到这一点?

我的问题主要是用户通过控件上的上下文菜单触发元素创建,然后想要创建一个副本,或者附近的新元素等等。

我似乎找不到将适当的信息传递给Execute函数的方法。

我知道CommandParameter,但我的直觉是通过整个源代码控制(或其父在右键菜单的情况下),这似乎是错误的。

这样做的习惯方法是什么?

通过命令创建新的ui元素

你说的是什么级别的复制?

最简单的情况:

1) IEumerable<object>在您的ViewModel,与不同的ViewModels(IFunnyControlViewModel, isadcontrolviewmodel)等。

2)在视图中创建ItemsControl并绑定该集合。你可以使用datatemplate将不同的视图模型"映射"到不同的视图控件。

3)接收ViewModel Execute()与底层ViewModel,只是"重新添加"它到集合,从而"引用"相同的对象,如果你想保持它们同步,或克隆它。

public YourViewModel {
   public IEnumerable<YourBaseControlViewModel> Controls {get; set;}
   public YourViewModel()
   {
       Controls = new List<YourBaseControlViewModel();
       Controls.Add(new YourFunnyControlViewModel());
   }
   // Called from View by Command.
   public void DuplicateControl(YourBaseControlViewModel Control)
   {
      // either duplicate it using cloning, or add the same reference.
      Controls.Add(Control);
   }
}

在ItemsControl中,类似于:

<ItemsControl ItemsSource="{Binding Controls}">
   <ItemsControl.Resources>
     <DataTemplate x:Type="{x:Type blah:YourFunnyControlViewModel}">
        custom stuff here
     </DataTemplate>
   </ItemsControl.Resources>
</ItemsControl>