Прикрепляемое свойство не работает

Попытался расширить функционал DataGrid =, чтобы можно было биндить SelectedItems. Делал на основе вот этого решения. В итоге получил вот такой код:

   public class DataGridSelectedItems
    {
        private static readonly Dictionary<DependencyObject, DataGridSelectedItemsBehavior> _behaviors = new();

        static DataGridSelectedItems()
        {

        }
        public static object GetSelectedItems(DependencyObject obj)
        {
            return (object)obj.GetValue(SelectedItemsProperty);
        }

        public static void SetSelectedItems(DependencyObject obj, object value)
        {
            obj.SetValue(SelectedItemsProperty, value);
        }


        public static readonly DependencyProperty SelectedItemsProperty =
            DependencyProperty.RegisterAttached("SelectedItems", typeof(object), typeof(DataGridSelectedItems), new UIPropertyMetadata(null, SelectedItemChanged));

        private static void SelectedItemChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
        {
            if (!(obj is DataGrid))
                return;

            if (!_behaviors.ContainsKey(obj))
                _behaviors.Add(obj, new DataGridSelectedItemsBehavior(obj as DataGrid));

            DataGridSelectedItemsBehavior datagrid = _behaviors[obj];
            datagrid.ChangeSelectedItems(e.NewValue);
        }
        private class DataGridSelectedItemsBehavior
        {
            readonly DataGrid _dataGrid;
            public DataGridSelectedItemsBehavior(DataGrid dataGrid)
            {
                this._dataGrid = dataGrid;
                dataGrid.SelectionChanged += (sender, e) => SetSelectedItems(dataGrid, dataGrid.SelectedItems);
            }

            internal void ChangeSelectedItems(object p)
            {
                var item = (DataGridRow)_dataGrid.ItemContainerGenerator.ContainerFromItem(p);
                item.IsSelected = true;
            }
        }
    }

Сделал привязку в XAML, но вообще ничего не происходит... Я поставил брейк поинты во всех местах и я некуда не попадаю... В чем может быть проблема?


Ответы (0 шт):