Files
Beyhan Oğur d5f52cc3d3 first commit
2026-09-03 04:45:36 +03:00

53 lines
1.6 KiB
C#

using System.Windows;
using System.Windows.Controls;
using System.Windows.Interactivity;
namespace ClassicAssist.UI.Misc
{
public class BindableSelectedItemBehavior : Behavior<TreeView>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.SelectedItemChanged += OnTreeViewSelectedItemChanged;
}
protected override void OnDetaching()
{
base.OnDetaching();
if ( AssociatedObject != null )
{
AssociatedObject.SelectedItemChanged -= OnTreeViewSelectedItemChanged;
}
}
private void OnTreeViewSelectedItemChanged( object sender, RoutedPropertyChangedEventArgs<object> e )
{
SelectedItem = e.NewValue;
}
#region SelectedItem Property
public object SelectedItem
{
get => 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 )
{
if ( e.NewValue is TreeViewItem item )
{
item.SetValue( TreeViewItem.IsSelectedProperty, true );
}
}
#endregion
}
}