/// <summary> /// SelectedItemProperty property changed handler. /// </summary> /// <param name="d">TreeView that changed its SelectedItem.</param> /// <param name="e">Event arguments.</param> private static void OnSelectedItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TreeView source = d as TreeView; // Ignore the change if requested if (source._ignorePropertyChange) { source._ignorePropertyChange = false; return; } // Ensure the property is only written when expected if (!source._allowWrite) { // Reset the old value before it was incorrectly written source._ignorePropertyChange = true; source.SetValue(SelectedItemProperty, e.OldValue); throw new InvalidOperationException( "Properties.Resources.TreeView_OnSelectedItemPropertyChanged_InvalidWrite"); } source.UpdateSelectedValue(e.NewValue); }
/// <summary> /// SelectedValuePathProperty property changed handler. /// </summary> /// <param name="d">TreeView that changed its SelectedValuePath.</param> /// <param name="e">Event arguments.</param> private static void OnSelectedValuePathPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TreeView source = d as TreeView; source.UpdateSelectedValue(source.SelectedItem); }