2010-11-22 6 views
6

Ist es möglich, ein ResourceDictionary in einem Style zu definieren?Kann ich einem Style Ressourcen oder ein ResourceDictionary hinzufügen?

Angenommen, ich möchte zwei verschiedene Styles für StackPanels haben und in einem möchte ich, dass alle Buttons blau und die anderen rot sind. Ist das möglich?

So etwas wie

<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> 

Der obige Code nicht mit einem Fehler über den Eigenschaftswert eines Setter kann nicht null sein (auch wenn es offensichtlich nicht null ist).

Ich kann so etwas wie

<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} /> 

tun aber ich frage mich, ob es eine Möglichkeit, die Resource in den Stil zu verschmelzen war.

Antwort

4

StackPanel.Resources ist kein DependencyProperty und daher glaube ich nicht, dass Sie diese Eigenschaft innerhalb des Stils festlegen können.

+0

Danke, ich glaube, Sie wahrscheinlich recht. Ich kann auch keine DynamicResource mit der Resources-Eigenschaft verwenden. – Rachel

3

Versuchen Sie, die Style (s) für jeden TargetType den DockPanel Style.Resources hinzuzufügen.

Ich habe etwas ähnliches mit einem DockPanel Style. Wollte alle Schaltflächen oder Trennzeichen, die dem DockPanel hinzugefügt wurden, um einheitlich gestaltet zu werden.

Hier ist ein Beispiel:

<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> 
Verwandte Themen