Laden...

Style in der GroupBox definieren -> Style in Window.Resources greift nicht mehr

Erstellt von C#Gustl vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.432 Views
C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 7 Jahren
Style in der GroupBox definieren -> Style in Window.Resources greift nicht mehr

Hallo,

ich habe in Window.Resources einen Style für GroupBox definiert.
Nun möchte ich im Window einer bestimmten GroupBox einen DataTrigger hinzufügen, also muss ich noch einen Style in der GroupBox definieren. Somit greift aber der Style in Window.Resources nicht mehr.

In Zeile 13 probiere ich mit BasedOn von dem Style in Window.Resources zu erben, klappt aber nicht.

<Window.Resources>
  <Style x:Key="GroupBoxWindow" TargetType="GroupBox" BasedOn="{StaticResource GroupBoxBase}">
    <Setter Property="BorderThickness" Value="0"/>
    <Style.Triggers>
      <Trigger Property="Control.IsEnabled" Value="False">
        <Setter Property="Control.Foreground" Value ="#FF6D6D6D" />
      </Trigger>
    </Style.Triggers>
  </Style>
</Window.Resources>
<GroupBox>
  <GroupBox.Style>
    <Style BasedOn="{StaticResource GroupBoxWindow}">
      <Style.Triggers>
        <DataTrigger Binding ="{Binding ElementName=lst_Clients, Path=SelectedIndex}" Value="-1">
          <Setter Property="GroupBox.IsEnabled" Value="false"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </GroupBox.Style>
</GroupBox>

Was mache ich hier falsch? Kann wer helfen?

W
955 Beiträge seit 2010
vor 7 Jahren

Schreibe mal

TargetType="GroupBox"

in dem GroupBox-Style mit rein.

C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 7 Jahren

Vielen Dank, genau das hat gefehlt.

Jetzt frag ich mich warum ich hier noch den TargetType angeben muss obwohl ich den Style direkt in einer GroupBox definiere.

Gibt es denn einen Anwendungsfall wo der TargetType anders sein soll als in dem Type wo man den Style definiert?

Gruß

1.040 Beiträge seit 2007
vor 7 Jahren

EDIT sagt, dass das Quatsch ist. X(

Du setzt ja im Endeffekt nur die Property Style der GroupBox, er weiß allerdings nicht automatisch, dass der Style dann für eine GroupBox genutzt werden soll.

D
985 Beiträge seit 2014
vor 7 Jahren

Bei einem xy Control wird bei der Style Eigenschaft ein Style erwartet, der diesem Control oder seiner Vorfahren entspricht.

Darum muss man immer explizit den TargetType angeben.

C
C#Gustl Themenstarter:in
36 Beiträge seit 2012
vor 7 Jahren

Alles klar, vielen Dank.

Gruß,
Jörg