Adding a UserControl to a TabItem

本文关键字:TabItem to UserControl Adding | 更新日期: 2023-09-27 18:17:17

最初我有我的MainWindow(.xaml),它有一个stackpanel和一个框架。在stackpanel中有三个导航按钮,框架有三个page中的一个(基于用户点击的导航按钮)。然而,似乎因为我没有做一个web应用程序,使用框架(和页面?)不是正确的方式去做它。所以我把stackpanel和frame改成了一个标签控件(标签是之前的三个按钮)。我还将Pages更改为usercontrols。

然而,我很难找到一种方法来把页面(现在是UserControls)到表项的内容,而不使用框架。我试图在主窗口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>

Adding a UserControl to a TabItem

你只需要创建一个UserControl的实例并把它放在TabItem

BasicsPage 是你想放在TabItem里面的UserControl。你所要做的就是:

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

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

<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