2010-11-22 28 views
6

Stilde bir ResourceDictionary tanımlamak mümkün mü?Bir Stile Kaynak veya ResourceDictionary ekleyebilir miyim?

Örneğin, StackPanels için iki farklı Stille sahip olmak istediğimi varsayalım ve birinde tüm düğmelerin mavi olmasını ve diğerinin kırmızı olmasını istiyorum. Mümkün mü?

şey

<Style x:Key="RedButtonsPanel" TargetType="{x:Type StackPanel}"> 
    <Setter Property="Orientation" Value="Horizontal" /> 
    <Setter Property="StackPanel.Resources"> 
     <Setter.Value> 
      <ResourceDictionary> 
       <Style TargetType="{x:Type Button}"> 
        <Setter Property="Background" Value="Red" /> 
       </Style> 
      </ResourceDictionary> 
     </Setter.Value> 
    </Setter> 
</Style> 

gibi yukarıdaki kodu (açıkça boş olmadığı halde) null olamaz bir Setter Property değeri hakkında bir hata ile sonlandı. tarzı haline ResourceDictionary birleştirmek için bir yol olup olmadığını merak ediyorum Ancak

Ben

<ResourceDictionary x:Key="RedButtons"> 
    <Style TargetType="{x:Type Button}"> 
     <Setter Property="Width" Value="100" /> 
     <Setter Property="Background" Value="Red" /> 
    </Style> 
</ResourceDictionary> 

<StackPanel Resources={StaticResource RedButtons} /> 

gibi bir şey yapabilirsiniz.

cevap

4

StackPanel.ResourcesDependencyProperty değildir ve bu nedenle bu özelliği stil içinde ayarlayabileceğinize inanmıyorum.

+0

sayesinde, muhtemelen haklısın. Kaynak özelliği ile bir DynamicResource kullanamıyorum. – Rachel

3

Her TargetType için Stilleri, DockPanel Style.Resources öğesine eklemeye çalışın.

DockPanel Style ile benzer bir şey yaptım. Tüm düğmeler veya Ayırıcıları DockPanel'e tutarlı bir şekilde stil almak için ekledi.

İşte bir örnek:

<Style x:Key="DockPanelToolBarStyle" TargetType="{x:Type DockPanel}"> 
    <Style.Resources> 
    <Style TargetType="Button" BasedOn="{StaticResource ButtonToolBarStyle}" /> 
    <Style TargetType="Separator" BasedOn="{StaticResource SeparatorToolBarStyle}" /> 
    </Style.Resources> 
    <Setter Property="Height" Value="45"/> 
    <Setter Property="Background" Value="{StaticResource ToolBarBrush}"/> 
</Style> 
İlgili konular