代码之家  ›  专栏  ›  技术社区  ›  Amir

如何将WPF窗口作为选项卡控件项加载到主窗口中?

  •  0
  • Amir  · 技术社区  · 8 年前

    我的主窗口的结构。xaml如下

    <Window>
       <Grid>
        <TabControl Name="MainTabCntrl">
           <TabItem1>
           <TabItem2>
           <TabItem3>
           .
           .
           .
           <TabItemN>
        </TabControl>
       </Grid>
    </Window>
    

    我试图实现的解决方案是分别创建N个窗口(代表我的选项卡项),每次用户单击选项卡项时,我都会在该选项卡项中加载相关窗口,如下所示

     private void inventory_start()//this function is called in my MainWinodw.xaml.cs
            {
                inv = new Inventory(db, logViewer);//this is a window
                TabItem tbItem = new TabItem();
                Frame frame = new Frame();
                frame.Content = inv;
                tbItem.Name = "invTab";
                tbItem.Content = frame;
                tbItem.IsSelected = true;
                MainTabCntrl.Items.Add(tbItem);
                inv.swithInventoryTabs("inv_info");
            }
    

    我现在有一个错误,“'Management\u V0.Inventory'根元素对导航无效。”

    2 回复  |  直到 8 年前
        1
  •  2
  •   mm8    8 年前

    一扇窗户 不能 成为另一个元素的子元素。时期

    Inventory 窗口到a UserControl (例如,简单地将XAML和代码从一个文件复制并粘贴到另一个文件)并将此文件用作 Content 库存 窗口和 Frame

    <Window x:Class="WpfApplication1.Inventory"
            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:WpfApplication1"
            mc:Ignorable="d"
            Title="Inventory" Height="300" Width="300">
        <local:UserControl1 />
    </Window>
    

    Frame frame = new Frame();
    frame.Content = new UserControl1();
    
        2
  •  1
  •   Ali Imran    8 年前

    XAML

     <TabControl >
                    <TabItem x:Name="tab1" Header="UserControl"></TabItem>
                    <TabItem x:Name="tab2" Header="noControl"></TabItem>
                </TabControl>
    

    在代码隐藏类中:

      tab1.Content = new UserControl1();
    

    <UserControl x:Class="WpfApplication1.UserControl1"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300">
        <Grid>
            <Viewbox>
                <TextBlock Text="User Control"/>
            </Viewbox>
        </Grid>
    </UserControl>
    
    推荐文章