我想为TabItem
中的所有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中使用(不使用代码隐藏)?
答案 0 :(得分:2)
<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
}
希望它有所帮助..
答案 1 :(得分:1)
你可以:
UserControl
并在每个TabItem
ControlTemplate
并将其应用于每个Control
TabItem
的实例
DataTemplate
并使用ItemsSource
的{{1}}将模板应用于每个孩子第一种方法可能是最安全的,特别是如果您需要单独访问每个标签页的内容。
答案 2 :(得分: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>
这是最干净,最简单的方法。