如何在WPF中制作动态主页内容

时间:2017-11-15 12:56:05

标签: c# wpf layout

enter image description here

我想在菜单按钮中选择操作时更改主面板内容。 像主要内容页面,设置页面,主面板上的内容页面一样(代码使用网格x:名称=" main_ ~~~) 使用它只能使3和控制能见度? 或者可以在Android上使用包含xml和更改包含目标? (例如> includelayout =" @ layout / app_bar_main")

Mainwindow.xaml

<Window x:Class="M_C.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-
compatibility/2006"
        xmlns:local="clr-namespace:M_C"
        mc:Ignorable="d"
        Title="MainWindow"
        Width="1024" Height="768"
        WindowStyle="None"
        WindowState="Maximized"
        WindowStartupLocation="CenterScreen">
    <Grid x:Name="wide_Out" Background="#000000">
        <Viewbox Stretch="Uniform">
            <Grid Width="1024" Height="768" VerticalAlignment="Top">
                <DockPanel x:Name="L_black" HorizontalAlignment="Left" 
Height="768" LastChildFill="False" VerticalAlignment="Top" Width="62" 
Background="#FF242424">
                    <Button Margin="15,8,0,0" Height="40" 
VerticalAlignment="Top" Width="30"/>
                </DockPanel>
                <DockPanel x:Name="T_blue" HorizontalAlignment="Left" 
Height="84" LastChildFill="False" Margin="62,0,0,0" VerticalAlignment="Top" 
Width="968" Background="#FF248BC7">
                    <TextBlock Margin="200,5,200,0" Height="70" 
TextWrapping="Wrap" Text="TextBlock" VerticalAlignment="Top" Width="554"/>
                </DockPanel>
                <DockPanel x:Name="L_blue" HorizontalAlignment="Left" 
Height="685" LastChildFill="False" Margin="62,83,0,0" 
VerticalAlignment="Top" Width="82" Background="#FF248BC7"/>
                <DockPanel x:Name="R_blue" HorizontalAlignment="Left" 
Height="685" LastChildFill="False" Margin="940,83,0,0" 
Background="#FF248BC7" Width="84"/>
                <DockPanel x:Name="B_blue" HorizontalAlignment="Left" 
Height="90" LastChildFill="False" Margin="143,678,0,0" 
VerticalAlignment="Top" Width="799" Background="#FF248BC7">
                    <Image Margin="250,15,250,15" Height="70" 
VerticalAlignment="Top" Width="290" />
                </DockPanel>
                <!--<DockPanel x:Name="main_content_panel" 
HorizontalAlignment="Left" Height="594" LastChildFill="False" 
Margin="144,84,0,0" VerticalAlignment="Top" Width="790">-->
                <Grid x:Name="main_con_body" Margin="143,82,84,88" 
Width="798" Height="594" Background="#ffffff">
                </Grid>
            <!--</DockPanel>-->
         </Grid>
     </Viewbox>
   </Grid>
</Window>

2 个答案:

答案 0 :(得分:0)

您可以在窗口中定义框架,并在所需的页面之间导航:

<Frame Name="FrameWithinGrid" >  
</Frame>  

和按钮单击,您只需导航:

private void button1_Click(object sender, RoutedEventArgs e)  
{  
   FrameWithinGrid.Navigate(new System.Uri("Page1.xaml",  
         UriKind.RelativeOrAbsolute));  
} 

了解更多See here

答案 1 :(得分:0)

MVVM方法

  1. 将main_con_body设为ContentControl
  2. 使Window的DataContext成为一个viewmodel
  3. 将main_con_body的Content属性绑定到数据上下文的viewmodel属性
  4. 为可能存在的各种类型的视图模型定义不同的DataTemplate