将UserControl添加到TabItem

时间:2014-08-10 18:56:51

标签: c# wpf xaml

最初我的MainWindow(.xaml)有一个堆叠面板和一个框架。在stackpanel内有三个导航按钮,框架有三个页面之一(根据用户点击的导航按钮)。但是,似乎因为我没有使用Web应用程序,使用Frame(和Pages?)并不是正确的方法。所以我将stackpanel和frame更改为单个tabcontrol(标签是之前的三个按钮)。我还将Pages更改为usercontrols。

但是,我很难找到一种方法将Pages(现在的UserControls)放入tabitem的内容中,而不使用Frame。我正在尝试在MainWindow xaml中完成所有这些。

我的MainWindow.xaml:

<Window x:Class="ConstructedLanguageOrganizerTool.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="454" Width="573">
    <Grid>
        <TabControl HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" Name="tabControl1">
            <TabItem Header="Basics" Name="basicsTab">
                //What can I use here instead of Frame?
            </TabItem>

            <TabItem Header="Words" Name="wordsTab">
                <Grid>
                    <Frame Source="WordsPage.xaml"/>
                </Grid>
            </TabItem>

            ...
        </TabControl>
    </Grid>
</Window>

我是以错误的方式来做这件事的吗?我想我可能会使用某种数据绑定吗?虽然,我对数据结合的看法越多,我就越感到困惑。

编辑:这是我的BasicsPage.xaml

<UserControl x:Class="ConstructedLanguageOrganizerTool.BasicsPage"
      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" x:Name="basicsPage" Height="349" Width="334">

    <Grid>
        // Grid Row and Column defs here

        //Number of textboxs and textblocks here.

    </Grid>
</UserControl>

1 个答案:

答案 0 :(得分:5)

您只需要 创建UserControl的实例并将其放在TabItem 中。

BasicsPage 是您想要放入TabItem的UserControl。所有你必须这样做:

<TabItem Header="Basics" Name="basicsTab">
   <local:BasicsPage/>
</TabItem>

在根窗口定义本地名称空间,其中BasicsPage定义如下:

<Window x:Class="ConstructedLanguageOrganizerTool.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:ConstructedLanguageOrganizerTool"> <-- HERE