我在Mainwindow中有一个mainGrid。 mainGrid有一个上下文菜单。该上下文菜单绑定到ViewModel。当用户单击上下文菜单项时,新的View将在运行时添加到主网格中。在上下文菜单项单击时,我从ViewModel添加视图之前。但是现在只有我知道在ViewModel中使用的视图类型是违规的。请任何人给出一个简单的示例或链接,以引用如何从ViewModel中添加视图。
<Grid x:Name="mainGrid">
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header="Add new Grid">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding Path=AddNewGridCommand}" CommandParameter="{Binding ElementName="mainGrid"}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</MenuItem>
</ContextMenu>
</Grid.ContextMenu>
</Grid>
ViewModel
private ICommand addNewGridCommand;
public ICommand AddNewGridCommand => addNewGridCommand ?? (addNewGridCommand = new RelayCommand(addGrid, canAddGrid));
private void addGrid(object obj)
{
// Some UI like below
Grid newGrid = new Grid()
{
Height = 100, Background = Brushes.Gray
}
((obj) as Grid).Children.Add(newGrid);
}