2016-10-22 12 views
0

我有一個TabControl這種結構:拆分TabItem的原因失去了風格

<TabControl> 
     <TabControl.Resources> 
      <Style TargetType="TabItem" BasedOn="{StaticResource MetroTabItem}"> 
       <Setter Property="Controls:ControlsHelper.HeaderFontSize" Value="20" /> 
      </Style> 
     </TabControl.Resources> 
     <local:Analysis /> 
</TabControl> 

現在我需要拆分每個TabItem,所以我創造這樣一個UserControl這種結構:

<TabItem xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls" 
     mc:Ignorable="d" Header="Analysis" Style="{StaticResource MetroTabItem}"> 
<Grid> 

</Grid> 

問題是TabItem導入的命名空間local:不採用的樣式在Resource。 所以爲了解決這個問題,我需要在每個TabItem中放置樣式資源,這會導致冗餘碼。

我怎樣才能把TabControl Resource的風格分解爲TabItem

謝謝。

回答

1

您可以創建自己的風格在你的App.xaml或者你Window.xaml靜態資源是這樣的:

<Application.Resources> 
    <Style TargetType="TabItem" x:Key="MyTabItemStyle" BasedOn="{StaticResource MetroTabItem}"> 
     <Setter Property="Controls:ControlsHelper.HeaderFontSize" Value="20" /> 
    </Style> 
</Application.Resources> 

你給你的風格(在這個例子MyTabItemStyle)的名稱是基於MetroTabItem風格。

然後,而不是直接在您的自定義TabItem使用MetroTabItem風格,你用你自己的風格MyTabItemStyle這樣的:

<TabItem xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls" 
    mc:Ignorable="d" Header="Analysis" Style="{StaticResource MyTabItemStyle}"> 
    <Grid> 

    </Grid> 
</TabItem>