private static void OnPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) { if (args.Property == RepeatedIndexProperty) { var item = obj as TreeViewItem; var indexPath = item.GetIndexPath(); if (item.SelectionModel != null) { item.IsSelected = IsRealized(indexPath) ? item.SelectionModel.IsSelectedAt(indexPath) : false; } AutomationProperties.SetLevel(item, indexPath.GetSize()); } else if (args.Property == SelectionModelProperty) { if (args.OldValue != null) { (args.OldValue as SelectionModel).PropertyChanged -= (obj as TreeViewItem).OnselectionModelChanged; } if (args.NewValue != null) { (args.NewValue as SelectionModel).PropertyChanged += (obj as TreeViewItem).OnselectionModelChanged; } } }