| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Text;
 
- using System.Threading.Tasks;
 
- using System.Windows;
 
- using System.Windows.Controls;
 
- using System.Windows.Interactivity;
 
- namespace MECF.Framework.UI.Core.ExtendedControls
 
- {
 
-     public class BindableSelectedItemBehavior : Behavior<TreeView>
 
-     {
 
-         #region SelectedItem Property
 
-         public object SelectedItem
 
-         {
 
-             get { return (object)GetValue(SelectedItemProperty); }
 
-             set { SetValue(SelectedItemProperty, value); }
 
-         }
 
-         public static readonly DependencyProperty SelectedItemProperty =
 
-             DependencyProperty.Register("SelectedItem", typeof(object), typeof(BindableSelectedItemBehavior), new UIPropertyMetadata(null, OnSelectedItemChanged));
 
-         private static void OnSelectedItemChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
 
-         {
 
-             var item = e.NewValue as TreeViewItem;
 
-             if (item != null)
 
-             {
 
-                 item.SetValue(TreeViewItem.IsSelectedProperty, true);
 
-             }
 
-         }
 
-         #endregion
 
-         protected override void OnAttached()
 
-         {
 
-             base.OnAttached();
 
-             this.AssociatedObject.SelectedItemChanged += OnTreeViewSelectedItemChanged;
 
-         }
 
-         protected override void OnDetaching()
 
-         {
 
-             base.OnDetaching();
 
-             if (this.AssociatedObject != null)
 
-             {
 
-                 this.AssociatedObject.SelectedItemChanged -= OnTreeViewSelectedItemChanged;
 
-             }
 
-         }
 
-         private void OnTreeViewSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
 
-         {
 
-             this.SelectedItem = e.NewValue;
 
-         }
 
-     }
 
-     public class TreeViewHelper
 
-     {
 
-         private static Dictionary<DependencyObject, TreeViewSelectedItemBehavior> behaviors = new Dictionary<DependencyObject, TreeViewSelectedItemBehavior>();
 
-         public static object GetSelectedItem(DependencyObject obj)
 
-         {
 
-             return (object)obj.GetValue(SelectedItemProperty);
 
-         }
 
-         public static void SetSelectedItem(DependencyObject obj, object value)
 
-         {
 
-             obj.SetValue(SelectedItemProperty, value);
 
-         }
 
-         // Using a DependencyProperty as the backing store for SelectedItem.  This enables animation, styling, binding, etc...
 
-         public static readonly DependencyProperty SelectedItemProperty =
 
-             DependencyProperty.RegisterAttached("SelectedItem", typeof(object), typeof(TreeViewHelper), new UIPropertyMetadata(null, SelectedItemChanged));
 
-         private static void SelectedItemChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
 
-         {
 
-             if (!(obj is TreeView))
 
-                 return;
 
-             if (!behaviors.ContainsKey(obj))
 
-                 behaviors.Add(obj, new TreeViewSelectedItemBehavior(obj as TreeView));
 
-             TreeViewSelectedItemBehavior view = behaviors[obj];
 
-             view.ChangeSelectedItem(e.NewValue);
 
-         }
 
-         private class TreeViewSelectedItemBehavior
 
-         {
 
-             TreeView view;
 
-             public TreeViewSelectedItemBehavior(TreeView view)
 
-             {
 
-                 this.view = view;
 
-                 view.SelectedItemChanged += (sender, e) => SetSelectedItem(view, e.NewValue);
 
-             }
 
-             internal void ChangeSelectedItem(object p)
 
-             {
 
-                 TreeViewItem item = (TreeViewItem)view.ItemContainerGenerator.ContainerFromItem(p);
 
-                 item.IsSelected = true;
 
-             }
 
-         }
 
-     }
 
- }
 
 
  |