Как привязать к команде окна? - PullRequest
0 голосов
/ 06 ноября 2011

У меня есть свойство зависимости для пользовательского элемента управления под названием «RefreshCommand» (тип ICommand), которое я хочу привязать к команде в моем главном окне.

Если я пишу это в коде, оно работает ...

MainToolbar.RefreshCommand = (ICommand)this.CommandBindings[0].Command;

.. но как я могу выразить это в XAML?

Я бы также хотел сослаться на команду по ее имени, а не по индексу.

Спасибо,

Ответы [ 2 ]

1 голос
/ 06 ноября 2011

вы можете связать в XAML с другим элементом XAML, например,

  • Имя элемента:

RefreshCommand="{Binding ElementName=window, Path=CommandBindings[0].Command}"

  • В свойствах"вы"

RefreshCommand="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=CommandBindings[0].Command}"

  • вверх по дереву с AncestorType

RefreshCommand="{Binding Path=CommandBindings[0].Command, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"

Еслипанель инструментов является дочерней по отношению к окну, я полагаю, что третий должен хорошо работать.

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

Я бы порекомендовал сделать это тогда.

3 класса

MainWindow.xaml (Window)
MainViewModel.cs (Class)
UserControl.xaml (UserControl)

Установите контекст данных MainWindow для ViewModel. UserControl будет наследовать этот контекст данных, если вы не измените его явно. Настройте элементы управления в пользовательском элементе управления / главном окне для привязки к командам реле в модели основного вида.

Это даст вам необходимый контекст без жестких индексов кодирования (ххх. [0]) и при этом сохранит степень разделения.

...