2012-12-25 54 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,但你仍然可以綁定一個事件。我已經爲你更新了代碼。 –