Лучшее объяснение, я надеюсь:
- У меня есть панель инструментов с 3 кнопками, все три привязаны к команде (включая CommandParameter)
- эта панель инструментов используется на нескольких экранах
- xaml панели инструментов одинаково для всех этих экранов
Я хочу удалить экземпляр панели инструментов и заменить его пользовательским элементом управления, который предоставляет 3 команды, чтобы я мог сохранять привязки на каждом экране. В дальнейшем планируется изменить функциональность панели инструментов, но внешний интерфейс программирования (а именно 3 команды) будет таким же.
Итак:
- Я создал пользовательский элемент управления и создал 3 набора свойств зависимостей для каждой команды (OneCommand, OneCommandParameter, OneCommandTarget), поэтому я могу использовать их для привязки.
- Я переместил панель инструментов xaml внутрь пользовательского элемента управления xaml.
- Я изменил привязки на кнопках панели инструментов, чтобы привязать их к внутренним свойствам пользовательского элемента управления
- на каждом экране (или на самом деле, пока только первом) я заменил исходную панель инструментов пользовательским элементом управления, привязав новые свойства к правильным командам.
Элемент управления показывает, но кнопки не работают.
Вот и все.
-
Исходное объяснение - не очень понятно:
У меня есть пользовательский элемент управления WPF, содержащий несколько кнопок. Ранее этот элемент управления представлял собой панель инструментов с несколькими кнопками на нем, но, поскольку мне нужны точно такие же функции на нескольких экранах, я превратил панель инструментов в пользовательский элемент управления.
Однако я бы хотел сохранить привязки команд к оригинальным кнопкам.
- Я создал 3 набора свойств зависимостей (XCommand, XCommandParameter и XCommandTarget) в пользовательском контроле.
- В пользовательском элементе управления xaml я связываю «настоящие» кнопки с этими свойствами (каждая кнопка с каждым набором свойств).
- Там, где я использую usercontrol, я связываю новые свойства с реальными привязками команд.
По сути, я хочу сохранить функциональность ICommandSource для каждой «команды», которую предоставляет пользовательский элемент управления. Тем не менее, этот двойной сценарий привязки данных, похоже, не работает, или я делаю что-то не так. :)
Есть ли лучший способ сделать это? Все, что мне нужно, это «соединить» команды извне элемента управления с внутренними кнопками, чтобы сохранить функциональность Execute и CanExecute.