Auf meinem Fenster befinden sich mehrere GroupBox Controls, die jeweils ein Grid Control enthalten. Diesen Gittern möchte ich einen Style zuordnen. Aber nur für diese Grids, die sich direkt in einer GroupBox befinden, sollten alle anderen Grids nicht betroffen sein.Style DataTrigger mit Bezug auf Typ des übergeordneten Steuerelements
Ich habe Folgendes versucht, was nicht funktioniert, da GetType() keine Eigenschaft ist.
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Parent.GetType()}" Value="{x:Type GroupBox}">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>
Ich habe eine Abhilfe gefunden, aber es ist nicht wirklich eine schöne Lösung, wie ich die Groupboxes ändern haben:
<Style TargetType="GroupBox">
<Setter Property="Tag" Value="blub"/>
</Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Parent.Tag, RelativeSource={RelativeSource Mode=Self}}" Value="blub">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>
Offensichtlich konnte ich den Stil für jedes Gitter manuell einstellen, aber ich Ich versuche das zu vermeiden, da es ziemlich viele sind. Ich hoffe, Sie können einen Weg finden, um das erste Beispiel zum Laufen zu bringen.
Ich fürchte, du liegst falsch. Mein Code funktioniert gut. Der Modus ist nicht vom Typ BindingMode, sondern vom Typ RelativeSourceMode. Meine Vermutung wäre, dass Sie die Klammern in RelativeSource = {RelativeSource Mode = Self} übersehen haben, die Mode zu einer Eigenschaft von RelativeSource und nicht zu einer von Binding machen. – PeterE
@Peter: Du hast Recht. Dieses horizontale Scrollen hat mich gestört und ich habe nicht wirklich die inneren Klammern bemerkt, die die 'Mode'-Eigenschaft von RelativeSource ausmachen. Danke für den Hinweis auf den Fehler! :-) – Nawaz