Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Правильное размещение функционала и привязки команд  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19953
Eld Hasp
- Каких-то "стандартных" методов для подключения кастомных команд в списочных элементах в WPF не предусмотрено. Поэтому и пришлось создавать класс ContextHolder
Это высказывание справедливо для работы в парадигме MVVM. Кстати, RelayCommand тоже не существует "из коробки".
3 ноя 18, 16:21    [21723295]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19953
Eld Hasp
- Если использовать напрямую команды из класса RoutedUICommand, то они требуют присоединения обработчика в самом окне на уровне View. Какая-то, как мне кажется, не завершённость в реализации... Или я опять чего-то не до понял?
Ну это опять же к предыдущему вопросу. Присоединение обработчика возможно, когда работаешь с CodeBehind, а когда используешь MVVM - нужна примочка в виде перехватчика всплывающих команд, которая будет направлять их выполнение в VM на RelayCommand
3 ноя 18, 16:24    [21723296]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Eld Hasp
Member

Откуда:
Сообщений: 178
Shocker.Pro
Это не привязка. Я советовал перечитать, что собой представляет команда. Команда - это просто экземпляр класса "RoutedUICommand", присвоенный статической переменной. Команда САМА ПО СЕБЕ ничего не делает - это просто маркер.

Button заставляет всплывать экземпляр, присвоенный статической переменной ApplicationCommands.New. Он отлавливается уровнем выше с помощью local:CommandBinding. Но этот "уловитель" должен же знать, на какую команду реагировать, иначе он будет реагировать на все команды, которые придут "снизу". Поэтому в его свойстве RoutedCommand указывается тот самый маркер, который нужно отлавливать именно ему.
Спасибо за разъяснение.
Читать-то я читаю - но до конца в голове не всё укладывается.

- "Команда - это просто экземпляр класса "RoutedUICommand", присвоенный статической переменной." - это я понял. Просто неправильно написал, выразил свою мысль.

- "Но этот "уловитель" должен же знать, на какую команду реагировать, иначе он будет реагировать на все команды, которые придут "снизу"" - это тоже понятно.
Не понятно другое. Всюду где читал, смотрел примеры - идёт объяснение привязки обработчика RoutedUICommand к обработчику в View. Почему? По идее WPF очень сильно завязан на MVVM. И не предусмотреть возможности привязки обработчика RoutedUICommand к VM ? Странно как-то.... Закрадывается впечатление, что я что-то не понимаю, или читаю не то что нужно.....
Почему не сделать подход, используемый Roman Mejtes (свойства класса CommandBinding), стандартным для RoutedUICommand ? Это же намного удобнее и логичнее для паттерна MVVM.
3 ноя 18, 16:46    [21723304]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19953
Eld Hasp
Не понятно другое. Всюду где читал, смотрел примеры - идёт объяснение привязки обработчика RoutedUICommand к обработчику в View. Почему? По идее WPF очень сильно завязан на MVVM
Да, я тоже согласен, что это странно - но как есть.
3 ноя 18, 16:48    [21723305]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Eld Hasp
Member

Откуда:
Сообщений: 178
Shocker.Pro
Да, я тоже согласен, что это странно - но как есть.
Ну... чуть отлегло от сердца. А то уже думал, что я сам такой тупой недалёкий....
Оказывается - нет! Это опять MS над всеми издевается!
3 ноя 18, 17:00    [21723310]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19953
Я сам учился у Романа, спасибо ему.
Может будет полезно изучить этот топик https://www.sql.ru/forum/1179489
3 ноя 18, 17:07    [21723313]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Eld Hasp
Member

Откуда:
Сообщений: 178
Shocker.Pro
Я сам учился у Романа, спасибо ему.
Может будет полезно изучить этот топик https://www.sql.ru/forum/1179489
Спасибо!
Прочитал - очень интересно, но с первого раза многое что не дошло. Буду вчитываться.
3 ноя 18, 17:45    [21723334]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19953
Там есть ссылка на рабочий пример.

Там, в общем-то о том же, но перехватчик команд присоединяется не через специальный класс ContextHolder, а через механизм, использующий AttachedProperty. Этот способ иногда еще называют behaviors, но это не те "поведения", которые идут почти из коробки и больше заточены для использования совместно с Blend.
3 ноя 18, 18:07    [21723341]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Eld Hasp
Member

Откуда:
Сообщений: 178
Shocker.Pro
Там есть ссылка на рабочий пример.
Если Вы пишите о ссылке RoutedListenerSample.zip, то ссылка рабочая, но файл там уже удалён.
3 ноя 18, 19:58    [21723387]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 19953
Eld Hasp
Shocker.Pro
Там есть ссылка на рабочий пример.
Если Вы пишите о ссылке RoutedListenerSample.zip, то ссылка рабочая, но файл там уже удалён.


К сообщению приложен файл (RLS.zip - 112Kb) cкачать
3 ноя 18, 20:31    [21723402]     Ответить | Цитировать Сообщить модератору
 Re: Правильное размещение функционала и привязки команд  [new]
Eld Hasp
Member

Откуда:
Сообщений: 178
Shocker.Pro, СПАСИБО!
4 ноя 18, 00:34    [21723471]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / WPF, Silverlight Ответить