TabControl中所有tabitem的内容相同
本文关键字:tabitem TabControl | 更新日期: 2023-09-27 17:49:34
我想为TabControl
中的所有TabItem
显示相同的内容:
<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(不使用代码隐藏)?
你可以这样做。在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
}
你可以:
- 将内容提取到
UserControl
中并在每个TabItem
中使用 - 创建
ControlTemplate
并将其应用于每个TabItem
中的Control
实例 - 定义
DataTemplate
并使用TabControl
的ItemsSource
将模板应用于每个子
第一种方法可能是最合理的,特别是当您需要分别访问每个选项卡页面的内容时。
我将<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>