C# 在WPF中网格行内显示表单的其他方法

C# 在WPF中网格行内显示表单的其他方法,c#,wpf,visual-studio-2010,C#,Wpf,Visual Studio 2010,我创建的WPF应用程序包含一个包含3行的网格。我在第三排有一套按钮。单击按钮后,表格将显示在网格的第二行。然而,我所做的是相当混乱的,因为我在同一个窗口中创建了所有表单内容,并将可见性设置为隐藏 示例代码: <Grid Name="panel1" Grid.Row="1" Visibility="Hidden"> //contains a lot of textblocks,buttons and images </Grid> <Grid Name="panel2

我创建的WPF应用程序包含一个包含3行的网格。我在第三排有一套按钮。单击按钮后,表格将显示在网格的第二行。然而,我所做的是相当混乱的,因为我在同一个窗口中创建了所有表单内容,并将可见性设置为隐藏

示例代码:

<Grid Name="panel1" Grid.Row="1" Visibility="Hidden">
 //contains a lot of textblocks,buttons and images
</Grid>
<Grid Name="panel2" Grid.Row="1" Visibility="Hidden">
 //contains a lot of textblocks,buttons and images
</Grid>
 <Grid Name="panel3" Grid.Row="1" Visibility="Hidden">
 //contains a lot of textblocks,buttons and images
</Grid>
这种方法看起来非常混乱,因为我在主Xaml文件中包含了所有代码。
需要一些替代方法来实现这一点。请帮忙。

创建一个这样的方法

private void VisibilityManager(Grid grd)
{
    new List<Grid>(){ panel1, panel2, panel3}
       .ForEach(x => x.Visibility = Visibility.Hidden);
    grd.Visibility = Visibility.Visible;
}
VisibilityManager(panel1);
用于使面板1可见,并隐藏所有其他


将来,如果您必须增加网格,只需在此方法中进行更改。

您可以设置tabcontrol的样式并切换选项卡,您可以使用contentcontrol并创建与要显示的内容的绑定。还可以使用数据绑定(取决于要显示的内容)和模板选择器。。。有很多方法可以解决这个问题。只需再告诉我一点你的内容是什么样子

我对可见性设置没有问题。我需要知道是否可以将panel1、panel2和panel3的内容放在单独的页面中(因为这些面板实际上是表单),并在单击按钮时显示它们。我可以为每个面板创建不同的页面(panel1作为单独的页面)并在单击按钮时显示它们?您应该在这里阅读有关
UserControls
的内容,谢谢。现在我用用户控件替换了它,它工作得非常好。每个面板(panel1、panel2和panel3)看起来都像一个表单。所以所有的表单内容都在里面//包含很多文本块、按钮和图像
VisibilityManager(panel1);