private static void OnIsSelectedPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
TreeViewItem source = d as TreeViewItem;
bool isSelected = (bool) e.NewValue;
// Ignore the change if requested
if (source.IgnorePropertyChange)
{
source.IgnorePropertyChange = false;
return;
}
source.Select(isSelected);
// Notify any automation peers of the selection change
TreeViewItemAutomationPeer peer = FrameworkElementAutomationPeer.FromElement(source) as TreeViewItemAutomationPeer;
if (peer != null)
{
peer.RaiseAutomationIsSelectedChanged(isSelected);
}
RoutedEventArgs args = new RoutedEventArgs();
if (isSelected)
{
source.OnSelected(args);
}
else
{
source.OnUnselected(args);
}
}