2

我想为 a 中的所有TabItems显示相同的内容TabControl

<TabControl>
    <TabItem Header="Tab 1">
        <StackPanel>
            <ComboBox />
            <Button Content="Button" x:Name="bButton" />
        </StackPanel>
    </TabItem>
    <TabItem Header="Tab 2" />
    <TabItem Header="Tab 3" />
</TabControl>

有没有一种简单的方法可以做到这一点而无需重复代码并且仅在 XAML 中(不使用代码隐藏)?

4

3 回答 3

3

你可以这样做。在 xaml 中定义公共资源。

<Window.Resources>
    <StackPanel x:Key="CommonTabContent">
        <ComboBox />
        <Button Content="Button" x:Name="bButton" Click="bButton_Click_1" />
    </StackPanel>

</Window.Resources>

并像使用它一样

<TabControl>
    <TabItem Header="Tab 1" Content="{StaticResource CommonTabContent}"/>
    <TabItem Header="Tab 2" Content="{StaticResource CommonTabContent}" />
    <TabItem Header="Tab 3" Content="{StaticResource CommonTabContent}" />
</TabControl>

您的 .cs 文件代码将包含该方法。

private void bButton_Click_1(object sender, RoutedEventArgs e)
{
    // your code
}

希望能帮助到你..

于 2012-12-26T03:33:42.487 回答
2

你可以:

  1. 将内容提取到 aUserControl中并在每个中使用TabItem
  2. 创建一个ControlTemplate并将其应用于Control每个实例TabItem
  3. 定义 aDataTemplate并使用ItemsSourceofTabControl将模板应用到每个孩子

第一种方法可能是最明智的,尤其是当您需要分别访问每个标签页的内容时。

于 2012-12-25T18:45:39.600 回答
0

我移动了<StackPanel>外部<TabControl>并设置了边距以将其放置在 TabControl 的顶部:

<TabControl HorizontalAlignment="Left">
    <TabItem Header="Tab 1" />
    <TabItem Header="Tab 2" />
    <TabItem Header="Tab 3" />
</TabControl>
<StackPanel HorizontalAlignment="Left" Margin="5,50,0,0">
    <ComboBox />
    <Button Content="Button" x:Name="bButton" />
</StackPanel>

这是最干净和最简单的方法。

于 2012-12-30T18:02:04.887 回答