通过命令创建新的ui元素
本文关键字:ui 元素 创建 命令 | 更新日期: 2023-09-27 18:04:12
是否有简单的方法来做到这一点?
我的问题主要是用户通过控件上的上下文菜单触发元素创建,然后想要创建一个副本,或者附近的新元素等等。
我似乎找不到将适当的信息传递给Execute
函数的方法。
我知道CommandParameter
,但我的直觉是通过整个源代码控制(或其父在右键菜单的情况下),这似乎是错误的。
这样做的习惯方法是什么?
你说的是什么级别的复制?
最简单的情况:
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>