2012-07-04 100 views
1

我對此模板的自定義控件具有此通用樣式。防止ControlTemplate中的控件繼承全局樣式(WPF)

<Style TargetType="{x:Type local:MyType}">   
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type local:MyType}">      
        <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> 
         <local:MyControl /> 
        </Border> 
        ... 

如果這種控制是在一個項目中,就是這種款式globaly組用於:

<Style TargetType="{x:Type Border}"> 
    <Setter Property="Padding" Value="3" /> 
    <Setter Property="VerticalAlignment" Value="Top" /> 
</Style> 

但MyControl是含普通UserControl: ...

<Border .. /> 

然後UserControl中的邊框(駐留在模板中)也繼承此樣式(Padding 3等)
是否有任何如何說ControlTemplate中的控件不會影響這些全局樣式? 只需提一下。這是一個通用模板

回答

0

你可以把你的風格放在一個x:Key的資源字典中,我一直這樣做,只有在我的控件上指定了鍵時纔會應用我的風格。

+0

是的,但可想而知,風格應適用於在應用程序的所有控件。除了這個自定義控件.. –

0

不知道我是否正確理解你。 做了一些工作,因爲我有類似的情況,我的控件的所有樣式全局指定,並自動繼承沒有x:鍵。

我不得不刪除某些控件的樣式,併爲某些控件應用不同的樣式。

在這種情況下,我創建了單獨的樣式(下面例如想要刪除樣式),所以只創建了空樣式,並用於任何地方以及需要哪個控件。

空的樣式:

<Grid.Resources> 
    <ResourceDictionary> 
     <Style x:Key="EmptyStyle"/> 
    </ResourceDictionary> 
</Grid.Resources> 

適用於防治:

<TextBlock Text="First Name" Style="{StaticResource EmptyStyle}" />