MAUI: как связать свойства событий (отправитель, EventArgs) в коде; привязка к ViewModel или Code Behind ⇐ C#
-
Anonymous
MAUI: как связать свойства событий (отправитель, EventArgs) в коде; привязка к ViewModel или Code Behind
Я успешно привязал событие Drop DrogGestureRecouncer к CodeBehind с помощью разметки XAML, как показано ниже:
Однако мне нужно выполнить то же самое в коде C#, что и при создании динамически создаваемого представления/элемента управления. Мое требование состоит в том, чтобы я получил оба аргумента от события (отправитель и DropEventArgs). Я открыт для решения, которое работает с CodeBehind или ViewModel.
Ниже представлена моя попытка, однако у меня возникли проблемы с MultiBinding. Вы можете увидеть мои комментарии в коде:
RelativeBindingSource rbs2 = new RelativeBindingSource(RelativeBindingSourceMode.FindAncestorBindingContext, ancestorType: typeof(TreeViewPageViewModel)); DropGestureRecouncer dropgGr = новый DropGestureRecouncer {AllowDrop = true}; dropgGr.Bind(DropGestureRecouncer.DropCommandProperty, режим: BindingMode.OneTime, источник: рбс2, путь: «DropGestureRecouncerDropCommand» ); dropgGr.SetBinding(DropGestureRecouncer.DropCommandParameterProperty, новый MultiBinding { Привязки = новая коллекция { new Binding("."), // Это отправитель? new Binding("") // Как здесь установить DropEvenArgs? x:TypeArguments="DropEventArgs" } }); label.GestureRecouncers.Add(dragGr);
Я успешно привязал событие Drop DrogGestureRecouncer к CodeBehind с помощью разметки XAML, как показано ниже:
Однако мне нужно выполнить то же самое в коде C#, что и при создании динамически создаваемого представления/элемента управления. Мое требование состоит в том, чтобы я получил оба аргумента от события (отправитель и DropEventArgs). Я открыт для решения, которое работает с CodeBehind или ViewModel.
Ниже представлена моя попытка, однако у меня возникли проблемы с MultiBinding. Вы можете увидеть мои комментарии в коде:
RelativeBindingSource rbs2 = new RelativeBindingSource(RelativeBindingSourceMode.FindAncestorBindingContext, ancestorType: typeof(TreeViewPageViewModel)); DropGestureRecouncer dropgGr = новый DropGestureRecouncer {AllowDrop = true}; dropgGr.Bind(DropGestureRecouncer.DropCommandProperty, режим: BindingMode.OneTime, источник: рбс2, путь: «DropGestureRecouncerDropCommand» ); dropgGr.SetBinding(DropGestureRecouncer.DropCommandParameterProperty, новый MultiBinding { Привязки = новая коллекция { new Binding("."), // Это отправитель? new Binding("") // Как здесь установить DropEvenArgs? x:TypeArguments="DropEventArgs" } }); label.GestureRecouncers.Add(dragGr);
Мобильная версия