Прикрепляемое свойство не работает
Попытался расширить функционал 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, но вообще ничего не происходит... Я поставил брейк поинты во всех местах и я некуда не попадаю... В чем может быть проблема?