Click or drag to resize

AttachedPropertiesContainer Klasse

Statischer Container für Attached Properties.
Vererbungshierarchie
SystemObject
  Vishnu.WPF_UI.DependencyPropertiesAttachedPropertiesContainer

Namensraum: Vishnu.WPF_UI.DependencyProperties
Assembly: Vishnu.WPF_UI (in Vishnu.WPF_UI.dll) Version: 1.0.0+d75bac576d44afb64cfff79fd3665c8ca1172cbc
Syntax
public static class AttachedPropertiesContainer

Der AttachedPropertiesContainer Typ exponiert die folgenden Member.

Methoden
 NameBeschreibung
Public MethodeStatic MemberGetHasParent WPF-Getter für die HasParentProperty.
Public MethodeStatic MemberGetLastNotNullLogical WPF-Getter für die LastNotNullLogicalProperty.
Public MethodeStatic MemberGetParentChildOrientation WPF-Getter für die ParentChildOrientationProperty.
Public MethodeStatic MemberSetHasParent WPF-Setter für die HasParentProperty.
Public MethodeStatic MemberSetLastNotNullLogical WPF-Setter für die LastNotNullLogicalProperty.
Public MethodeStatic MemberSetParentChildOrientation WPF-Setter für die ParentChildOrientationProperty.
Zurück nach oben
Felder
 NameBeschreibung
Public FeldStatic MemberHasParentProperty Bei True hat der Knoten einen Eltern-Knoten, bei False ist er die Root.
Public FeldStatic MemberLastNotNullLogicalProperty Attached Property für einen nullable Boolean zur Weitergabe des logischen Zustands des dem Control zugeordneten Checkers (wird z.B. zur abhängigen Farbgebung (false=rot, true=grün) einer übergeordneten Border in einem ControlTemplate genutzt): Nach diversen Fehlversuchen hat sich als einzige gangbare Lösung folgende Vorgehensweise herauskristallisiert: einem dem ControlTemplate übergeordneten Control oder DataTemplate wird die AttachedProperty "LastNotNullLogical" zugeordnet: <Expander Name="Exp" Template="{StaticResource ExpanderStyleHeaderCentered}" ... attached:AttachedPropertiesContainer.LastNotNullLogical="{Binding LastNotNullLogical, diag:PresentationTraceSources.TraceLevel=High}" > Die AttachedProperty "LastNotNullLogical" wird dabei direkt an "LastNotNullLogical" aus dem DataContext, hier "LogicalNodeViewModel" gebunden. Im untergeordneten ControlTemplate, hier <ControlTemplate TargetType="ToggleButton"> in LogicalTaskTreeControlStaticResourceDictionary.xaml werden DataTrigger an das übergeordnete Control mit Path auf die AttachedProperty "LastNotNullLogical" gebunden: <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Path=(attached:AttachedPropertiesContainer.LastNotNullLogical)}" Value="True"> <Setter Property = "Border.BorderBrush" TargetName="ToggleButtonBorder" Value="{StaticResource ItemBorderBrushGreen}" /> </DataTrigger> <DataTrigger Binding = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Path=(attached:AttachedPropertiesContainer.LastNotNullLogical)}" Value="False"> <Setter Property = "Border.BorderBrush" TargetName = "ToggleButtonBorder" Value = "{StaticResource ItemBorderBrushRed}" /> </ DataTrigger> Wichtiger Hinweis: andere Lösungsansätze scheiterten spätestens bei Umschaltung der Tree-Orientierung.
Public FeldStatic MemberParentChildOrientationProperty Ausrichtung der Kind-Knoten, horizontal oder vertikal.
Zurück nach oben
Angefügte Eigenschaften
 NameBeschreibung
Public EigenschaftHasParent Attached Property (bool). Bei true hat der Knoten Child-Knoten.
Public EigenschaftLastNotNullLogical Attached Property für einen nullable Boolean zur Weitergabe des logischen Zustands des dem Control zugeordneten Checkers (wird z.B. zur abhängigen Farbgebung (false=rot, true=grün) einer übergeordneten Border in einem ControlTemplate genutzt): Nach diversen Fehlversuchen hat sich als einzige gangbare Lösung folgende Vorgehensweise herauskristallisiert: einem dem ControlTemplate übergeordneten Control oder DataTemplate wird die AttachedProperty "LastNotNullLogical" zugeordnet: <Expander Name="Exp" Template="{StaticResource ExpanderStyleHeaderCentered}" ... attached:AttachedPropertiesContainer.LastNotNullLogical="{Binding LastNotNullLogical, diag:PresentationTraceSources.TraceLevel=High}" > Die AttachedProperty "LastNotNullLogical" wird dabei direkt an "LastNotNullLogical" aus dem DataContext, hier "LogicalNodeViewModel" gebunden. Im untergeordneten ControlTemplate, hier <ControlTemplate TargetType="ToggleButton"> in LogicalTaskTreeControlStaticResourceDictionary.xaml werden DataTrigger an das übergeordnete Control mit Path auf die AttachedProperty "LastNotNullLogical" gebunden: <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Path=(attached:AttachedPropertiesContainer.LastNotNullLogical)}" Value="True"> <Setter Property = "Border.BorderBrush" TargetName="ToggleButtonBorder" Value="{StaticResource ItemBorderBrushGreen}" /> </DataTrigger> <DataTrigger Binding = "{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Expander}}, Path=(attached:AttachedPropertiesContainer.LastNotNullLogical)}" Value="False"> <Setter Property = "Border.BorderBrush" TargetName = "ToggleButtonBorder" Value = "{StaticResource ItemBorderBrushRed}" /> </ DataTrigger> Wichtiger Hinweis: andere Lösungsansätze scheiterten spätestens bei Umschaltung der Tree-Orientierung.
Public EigenschaftParentChildOrientation Attached Property (Orientation), Horizontal oder Vertical.
Zurück nach oben
Anmerkungen
File: AttachedPropertiesContainer.cs Autor: Erik Nagel 22.07.2013 Erik Nagel: erstellt 28.11.2022 Erik Nagel: LastNotNullLogicalProperty.
Siehe auch