2012-12-25 20 views
1

所有的TabItems同样的内容我想告诉所有TabItem S IN一TabControl相同的内容:在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

我感动<TabControl><StackPanel>并设置页边距,以将其放置在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> 

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

1

,你可以:

  1. 的内容解压到一个UserControl并在每个TabItem
  2. 使用它在每个TabItem
  3. 创建ControlTemplate,并将其应用到Control的实例定义一个DataTemplate和使用ItemsSourceTabControl将模板应用于每个孩子

第一种方法可能是最严谨的,特别是如果您需要分别访问每个标签页的内容。

1

你可以这样做。在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 
} 

希望它有助于..

+0

但为什么你需要访问按钮? –

+0

您可以使用按钮绑定命令。你不需要点击事件处理。 –

+0

我刚刚检查过,你不能访问bButton,但你仍然可以绑定一个事件。我已经为你更新了代码。 –