 | AttachedPropertiesContainerLastNotNullLogicalProperty Feld |
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.
Namensraum: Vishnu.WPF_UI.DependencyPropertiesAssembly: Vishnu.WPF_UI (in Vishnu.WPF_UI.dll) Version: 1.0.0+d75bac576d44afb64cfff79fd3665c8ca1172cbc
Syntaxpublic static readonly DependencyProperty LastNotNullLogicalProperty
Public Shared ReadOnly LastNotNullLogicalProperty As DependencyProperty
public:
static initonly DependencyProperty^ LastNotNullLogicalProperty
static val LastNotNullLogicalProperty: DependencyProperty
Feldwert
DependencyProperty
Siehe auch