Синтаксис вложенных свойств в xaml - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть вложенный объект, определенный в xaml. Например, у меня был такой код (utils:HotkeyCommand - это мой класс MarkupExtension в выделенном коде):

<dxb:BarButtonItem>
  <dxb:BarButtonItem.Command>
    <utils:HotkeyCommand />
  </dxb:BarButtonItem.Command>
</dxb:BarButtonItem>

, который выглядел довольно неуклюже, поэтому я решил переписать его следующим образом (и это работало нормально):

<dxb:BarButtonItem Command="{utils:HotkeyCommand}" />

После этого я хочу определить некоторые свойства в моем исходном коде:

<dxb:BarButtonItem>
  <dxb:BarButtonItem.Command>
    <utils:HotkeyCommand CanExecuteNotifier="{StaticResource GeneralEnabled}" Executed="test" Gesture="Ctrl+N" />
  </dxb:BarButtonItem.Command>
</dxb:BarButtonItem>

Как я могу переписать этот код в одну строку таким же образом?

Я хочу получить что-то вроде следующего (но оно не компилируется). Существуют ли правила, которые можно использовать для преобразования одной записи во вторую?

<dxb:BarButtonItem Command="{utils:HotkeyCommand CanExecuteNotifier={StaticResource GeneralEnabled}, Executed={test}, Gesture={Ctrl+N}}" />

1 Ответ

0 голосов
/ 02 ноября 2011

Наконец-то я сделал это с помощью ответа x0r (куда он делся?)

 <dxb:BarButtonItem Command="{utils:HotkeyCommand {StaticResource GeneralEnabled}, Executed=test, Gesture=Ctrl+N}" />

В дополнение к снятию скобок мне также пришлось изменить:

  1. Изменение Executed из события в свойство, содержащее делегат
  2. Чтобы сделать возможным использование HotkeyCommand из ресурса, мне пришлось создать конструктор в MarkupExtension с параметром, как описано здесь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...