Выставить несколько команд в пользовательском элементе управления WPF - PullRequest
0 голосов
/ 19 февраля 2009

Лучшее объяснение, я надеюсь:

  • У меня есть панель инструментов с 3 кнопками, все три привязаны к команде (включая CommandParameter)
  • эта панель инструментов используется на нескольких экранах
  • xaml панели инструментов одинаково для всех этих экранов

Я хочу удалить экземпляр панели инструментов и заменить его пользовательским элементом управления, который предоставляет 3 команды, чтобы я мог сохранять привязки на каждом экране. В дальнейшем планируется изменить функциональность панели инструментов, но внешний интерфейс программирования (а именно 3 команды) будет таким же.

Итак:

  • Я создал пользовательский элемент управления и создал 3 набора свойств зависимостей для каждой команды (OneCommand, OneCommandParameter, OneCommandTarget), поэтому я могу использовать их для привязки.
  • Я переместил панель инструментов xaml внутрь пользовательского элемента управления xaml.
  • Я изменил привязки на кнопках панели инструментов, чтобы привязать их к внутренним свойствам пользовательского элемента управления
  • на каждом экране (или на самом деле, пока только первом) я заменил исходную панель инструментов пользовательским элементом управления, привязав новые свойства к правильным командам.

Элемент управления показывает, но кнопки не работают. Вот и все.

-

Исходное объяснение - не очень понятно:

У меня есть пользовательский элемент управления WPF, содержащий несколько кнопок. Ранее этот элемент управления представлял собой панель инструментов с несколькими кнопками на нем, но, поскольку мне нужны точно такие же функции на нескольких экранах, я превратил панель инструментов в пользовательский элемент управления.

Однако я бы хотел сохранить привязки команд к оригинальным кнопкам.

  • Я создал 3 набора свойств зависимостей (XCommand, XCommandParameter и XCommandTarget) в пользовательском контроле.
  • В пользовательском элементе управления xaml я связываю «настоящие» кнопки с этими свойствами (каждая кнопка с каждым набором свойств).
  • Там, где я использую usercontrol, я связываю новые свойства с реальными привязками команд.

По сути, я хочу сохранить функциональность ICommandSource для каждой «команды», которую предоставляет пользовательский элемент управления. Тем не менее, этот двойной сценарий привязки данных, похоже, не работает, или я делаю что-то не так. :)

Есть ли лучший способ сделать это? Все, что мне нужно, это «соединить» команды извне элемента управления с внутренними кнопками, чтобы сохранить функциональность Execute и CanExecute.

1 Ответ

0 голосов
/ 19 февраля 2009

Я решил это. В моем RelativeSource была ошибка в привязках внутреннего контроля. Теперь он работает нормально, как и ожидалось.

...