using System.Collections; using System.Windows; using System.Windows.Controls; using Microsoft.Xaml.Behaviors; namespace DMS.WPF.Helper { public class SelectedItemsBehavior : Behavior { public static readonly DependencyProperty SelectedItemsProperty = DependencyProperty.Register(nameof(SelectedItems), typeof(IList), typeof(SelectedItemsBehavior), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); public IList SelectedItems { get => (IList)GetValue(SelectedItemsProperty); set => SetValue(SelectedItemsProperty, value); } protected override void OnAttached() { base.OnAttached(); AssociatedObject.SelectionChanged += OnSelectionChanged; } protected override void OnDetaching() { base.OnDetaching(); if (AssociatedObject != null) { AssociatedObject.SelectionChanged -= OnSelectionChanged; } } private void OnSelectionChanged(object sender, SelectionChangedEventArgs e) { if (sender is DataGrid dataGrid) { SelectedItems = dataGrid.SelectedItems; } } } }