Использование поведения для привязки SelectedItems DataGrid в WPF не работаетC#

Место общения программистов C#
Ответить
Anonymous
 Использование поведения для привязки SelectedItems DataGrid в WPF не работает

Сообщение Anonymous »

Моя идея — использовать поведение для привязки SelectedItems DataGrid. Я создал поведение под названием DataGridSelectItemsBehavior. Существует свойство зависимостей MySlectItemsProperty. Я слежу за изменениями AssociatedObject_SelectionChanged. При обнаружении изменения я получу привязку объекта, а затем обновлю привязку во внешнем интерфейсе.

Код: Выделить всё

public class DataGridSelectItemsBehavior : Behavior
{
public static readonly DependencyProperty MySlectItemsProperty =
DependencyProperty.Register("MySlectItems", typeof(IList), typeof(DataGridSelectItemsBehavior), new PropertyMetadata(null));

public static readonly DependencyProperty SelectIndexProperty =
DependencyProperty.Register("SelectIndex", typeof(int), typeof(DataGridSelectItemsBehavior), new PropertyMetadata(-1));

public IList MySlectItems
{
get { return (IList)GetValue(MySlectItemsProperty); }
set { SetValue(MySlectItemsProperty, value); }
}

public int SelectIndex
{
get { return (int)GetValue(SelectIndexProperty); }
set { SetValue(SelectIndexProperty, value); }
}

protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.SelectionChanged += AssociatedObject_SelectionChanged;
}

private void AssociatedObject_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var dataGrid = sender as DataGrid;
if (dataGrid != null)
{
MySlectItems = dataGrid.SelectedItems;
SelectIndex = dataGrid.SelectedIndex;
var s = dataGrid.GetBindingExpression(MySlectItemsProperty);
}

}

protected override void OnDetaching()
{
base.OnDetaching();
AssociatedObject.SelectionChanged -= AssociatedObject_SelectionChanged;
}
}
В методе AssociatedObject_SelectionChanged обнаружено, что s всегда имеет значение NULL
Далее идет XAML. Я подтвердил, что в ViewModel есть свойства UserSelectedItems1 и Select, и нет подсказки, указывающей на сбой привязки в Visual Studio.
Я не могу найти метод, который помог бы мне получить правильный подход.

Подробнее здесь: https://stackoverflow.com/questions/791 ... oesnt-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»