Привязка CommandParameter к элементу пользовательского интерфейса вне CommandBar

1

У меня есть AppBarButton с командой, привязанной к viewmodel (WinRT - Windows 8.1) внутри CommandBar:

<CommandBar.PrimaryCommands>
   <AppBarButton Name="someOtherButton" ../>
   <AppBarButton Name="CropImageButton" Icon="Crop" Label="Crop image" 
                 Command="{Binding CropImageCommand}" CommandParameter="{Binding ElementName=croppableImage, Path=OrginalSelectedArea}" />
</CommandBar.PrimaryCommands>            

К сожалению, это не работает - параметр всегда равен нулю. Однако эта привязка работает:

CommandParameter={Binding ElementName=someOtherButton, ..}

Я исправил это, создав свойство SelectedArea в viewmodel вместо использования CommandParameter но мне любопытно, что привязки к ElementName каким-то образом ограничены областью видимости?

Теги:
xaml
windows-runtime

2 ответа

1

Кажется, что привязка к CommandBar не работает должным образом, если вы явно не устанавливаете CommandBar.DataContext, а не используете ElementName в качестве источника для привязки.

EDIT: это была ошибка на платформе WinRT 8.1. DataContext не будет правильно распространяться на всех дочерних страниц страницы, теперь это исправлено и работает.

  • 0
    Я получаю ту же ошибку в VS2015.2 для разработки Windows10. Я не знаю, была ли ошибка исправлена для 8.1, она есть для Win10!
  • 0
    Я использую это прямо сейчас в своем приложении, и я почти уверен, что оно работает на 10. Нет кода позади, нет ElementName, просто простая привязка. Может быть, есть еще проблема с «временем», кто знает? (например, когда и где вы устанавливаете DataContext? В моем случае я устанавливаю его при навигации по странице, в методе OnNavigatedTo, и все работает должным образом).
Показать ещё 3 комментария
1

Я также встретил эту проблему. Привязка элемента UI к параметру команды всегда получает значение null. Возможно, элемент не готов при выполнении привязки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню