在 WPF 的主窗口中的网格中打开用户控件

3

我现在正在使用WPF编写一个应用程序,尝试回忆起很久以前做过的事情。 我试图创建一个具有4个按钮的窗口,通过它们来浏览整个应用程序。

我的代码:

<Grid>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="55*"/>
            <ColumnDefinition Width="453*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <StatusBar Margin="0" VerticalAlignment="Top" Height="23" Grid.ColumnSpan="4" Grid.Row="2" Background="#FF1A202C"/>
        <Menu Margin="0" Height="23" Grid.ColumnSpan="4" Background="#FF1A202C" />
        <StackPanel Grid.Row="1" Width="224.2" HorizontalAlignment="Left" Background="#FF1F7872"  >
            <Button Content="Dashboard" Style="{StaticResource BorderlessButton}" Foreground="#FFF1E7E7" Template="{DynamicResource GlassButton}" Margin="25,20,23,20" Click="Button_Click_1" />
            <Button Content="Components" Style="{StaticResource BorderlessButton}" Foreground="#FFF1E7E7" Template="{DynamicResource GlassButton}" Margin="25,20,23,20"/>
            <Button Content="TimeLine" Style="{StaticResource BorderlessButton}" Foreground="#FFF1E7E7" Template="{DynamicResource GlassButton}" Margin="25,20,23,20"/>
            <Button Content="Drilldown" Style="{StaticResource BorderlessButton}" Foreground="#FFF1E7E7" Template="{DynamicResource GlassButton}" Margin="25,20,23,20"/>
        </StackPanel>
        <Grid Grid.Column="2" Grid.Row="1" HorizontalAlignment="Stretch" Grid.ColumnSpan="2" Background="#FF72B095">

        </Grid>     
    </Grid>

我有4个用户控件,当我点击按钮时,希望它们出现在网格中(也许我需要替换控件)。

一个朋友建议我在Blend中使用故事板,但我记得很久以前我用的是XAML和C#。

我尝试使用故事板工具,但我不明白如何使用它,总的来说,我认为故事板工具对我的用途来说太过复杂。

1个回答

3

给网格命名:

<Grid  Name="MainGrid" >

</Grid>

接着,在代码后台处理点击事件:

void Button_Click_1(object sender, MouseEventArgs e)
{ 
    MainGrid.Children.Add( // Your control //);
}

太容易了,我都有点尴尬了。非常感谢! - SigmaOmega
我有一个小问题,在代码后面,我需要始终创建我的控件的新实例吗?像这样: MainGrid.Children.Clear(); Dashboard board = new Dashboard(); MainGrid.Children.Add(board); 因为当我尝试像这样做时: MainGrid.Children.Clear(); MainGrid.Children.Add(Dashboard ); 我会得到一个错误 :( - SigmaOmega
不,如果您调用了 InitializeComponent() 方法,则会创建 MainGrid 的实例。 - Ramin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接