private static void OnTargetPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { DescriptionViewer dv = d as DescriptionViewer; if (dv != null) { bool targetFocused = e.NewValue == System.Windows.Input.FocusManager.GetFocusedElement(); if (dv.IsFocused != targetFocused) { dv.IsFocused = targetFocused; } dv.LoadMetadata(false); FrameworkElement oldElement = e.OldValue as FrameworkElement; FrameworkElement newElement = e.NewValue as FrameworkElement; EventHandler <ValidationErrorEventArgs> bindingHandler = new EventHandler <ValidationErrorEventArgs>(dv.Target_BindingValidationError); RoutedEventHandler gotFocusHandler = new RoutedEventHandler(dv.Target_GotFocus); RoutedEventHandler lostFocusHandler = new RoutedEventHandler(dv.Target_LostFocus); if (oldElement != null) { oldElement.BindingValidationError -= bindingHandler; oldElement.GotFocus -= gotFocusHandler; oldElement.LostFocus -= lostFocusHandler; } if (newElement != null) { newElement.BindingValidationError += bindingHandler; newElement.GotFocus += gotFocusHandler; newElement.LostFocus += lostFocusHandler; } dv.ParseTargetValidState(); } }
private static void OnIsValidPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { DescriptionViewer dv = d as DescriptionViewer; if (dv != null && !dv.AreHandlersSuspended()) { dv.SetValueNoCallback(DescriptionViewer.IsValidProperty, e.OldValue); throw new InvalidOperationException(String.Format(CultureInfo.InvariantCulture, resources.UnderlyingPropertyIsReadOnly, "IsValid")); } }
/// <summary> /// Handle the Description field property change event. This will update the the VSM state. /// </summary> /// <param name="depObj">The DescriptionViewer that changed its Description value.</param> /// <param name="e">The DependencyPropertyChangedEventArgs for this event.</param> private static void OnDescriptionPropertyChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e) { // Dependency property changed DescriptionViewer dv = depObj as DescriptionViewer; if (dv != null) { dv.UpdateDescriptionState(); } }
private static void OnPropertyPathPropertyChanged(DependencyObject depObj, DependencyPropertyChangedEventArgs e) { DescriptionViewer dv = depObj as DescriptionViewer; if (dv != null && dv.Initialized) { dv.LoadMetadata(false); // Changing the PropertyPath sometimes requires an update for the validation state, since it might be stale. dv.ParseTargetValidState(); } }
private static void OnDataContextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { DescriptionViewer dv = d as DescriptionViewer; if (dv != null) { if (e.OldValue == null || e.NewValue == null || e.OldValue.GetType() != e.NewValue.GetType()) { // Refresh the metadata, but only if the DataContext's type has changed (or if either is null) dv.LoadMetadata(false); } } }
/// <summary> /// Initializes a new instance of the <see cref="T:System.Windows.Automation.Peers.DescriptionViewerAutomationPeer" /> class. /// </summary> /// <param name="owner"> /// The <see cref="T:System.Windows.Controls.DescriptionViewer" /> that is associated with this <see cref="T:System.Windows.Automation.Peers.DescriptionViewerAutomationPeer" />. /// </param> public DescriptionViewerAutomationPeer(DescriptionViewer owner) : base(owner) { }