2013-06-26 109 views
0

我有一個自定義的控制,基本上是一個ContentControl中WPF內容控制造型

public class PromoAlarmBox : ContentControl 
    { 
     static PromoAlarmBox() 
     { 
      DefaultStyleKeyProperty.OverrideMetadata(typeof(PromoAlarmBox), new FrameworkPropertyMetadata(typeof(PromoAlarmBox))); 
     } 
    } 

我將它添加到包含用戶控制

<controls:PromoAlarmBox Grid.Row="9" Grid.Column="1" /> 

如果我的風格添加到含用戶控件資源一切工作正常

<UserControl.Resources> 
     <Style TargetType="{x:Type controls:PromoAlarmBox}"> 
      <Setter Property="ContentControl.ContentTemplate"> 
       <Setter.Value> 
        <DataTemplate > 
         <Rectangle Fill="Blue" Stroke="Black" Height="20" Width="20"/> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </UserControl.Resources> 

但是,如果我將它添加到自定義控件中的generic.xaml項目中,沒有什麼是顯示

<Style TargetType="{x:Type local:PromoAlarmBox}"> 
     <Setter Property="ContentControl.ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate > 
        <Rectangle Fill="Blue" Stroke="Black" Height="20" Width="20"/> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

我知道,因爲我有在同一項目中其他控件衛生組織樣式在generic.xaml定義,任何人有任何想法的樣式應用?

回答

1

一個簡單static應該做的伎倆......

static PromoAlarmBox() 
    { 
     DefaultStyleKeyProperty.OverrideMetadata(typeof(PromoAlarmBox), new FrameworkPropertyMetadata(typeof(PromoAlarmBox))); 
    } 
+0

試過沒有成功 – klashagelqvist

0

雖然林不知道爲什麼是有區別的,當你使用樣式作爲本地資源,當你使用通用的,這對我的作品

<Style TargetType="{x:Type local:PromoAlarmBox}"> 

     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ContentControl"> 
        <Rectangle VerticalAlignment="Stretch" Fill="Yellow" Stroke="Black" Height="20" Width="20"/> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style>