如何在运行时不使用wpf中的ViewModel添加视图

时间:2018-07-18 05:24:25

标签: c# wpf mvvm

我在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);
}

0 个答案:

没有答案