diff --git a/src/Microsoft.Xaml.Behaviors/Core/DataTrigger.cs b/src/Microsoft.Xaml.Behaviors/Core/DataTrigger.cs index b5e20e5..2c28bbd 100644 --- a/src/Microsoft.Xaml.Behaviors/Core/DataTrigger.cs +++ b/src/Microsoft.Xaml.Behaviors/Core/DataTrigger.cs @@ -40,6 +40,42 @@ public DataTrigger() { } + protected override void OnAttached() + { + base.OnAttached(); + + //fixes issue #11. We want to evaluate the binding's initial value when the element is first loaded + if (AssociatedObject is FrameworkElement element) + { + element.Loaded += OnElementLoaded; + } + } + + protected override void OnDetaching() + { + base.OnDetaching(); + UnsubscribeElementLoadedEvent(); + } + + private void OnElementLoaded(object sender, RoutedEventArgs e) + { + try + { + EvaluateBindingChange(e); + } finally + { + UnsubscribeElementLoadedEvent(); + } + } + + private void UnsubscribeElementLoadedEvent() + { + if (AssociatedObject is FrameworkElement element) + { + element.Loaded -= OnElementLoaded; + } + } + /// /// Called when the binding property has changed. /// UA_REVIEW:chabiss