Как получить CommandBar из ресурсов XAML в C ++ / CX? - PullRequest
0 голосов
/ 26 января 2020

Я определил CommandBar в ресурсах страницы:

<Page.Resources>
    <CommandBar x:Name="mainCommandBar" x:Key="mainCommandBar">
        <AppBarButton Icon="Accept" Label="AppBarButton"/>
        <AppBarButton Icon="Cancel" Label="AppBarButton"/>
    </CommandBar>
</Page.Resources>

А затем в конструкторе страницы я назначаю эту панель команд TopAppBar:

TopAppBar = mainCommandBar;

Но я получаю ошибку "Элемент не найдено ".

Если я создаю CommandBar программно - все работает.

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Вам необходимо удалить запись в ResourceDictionary до назначения ее TopAppBar, потому что экземпляр Control может не появляться несколько раз в дереве XAML.

MainPage::MainPage()
{
    InitializeComponent();

    Resources->Remove(L"mainCommandBar");
    TopAppBar = mainCommandBar;
}
0 голосов
/ 27 января 2020

Сначала необходимо извлечь ресурс стиля CommandBar из словаря ресурсов страницы, а затем назначить этот commandBar для TopAppBar.

MainPage::MainPage()
{
    InitializeComponent();

    CommandBar^ commandBarStyle = (CommandBar^)this->Resources->Lookup("mainCommandBar");
    CommandBar^ TopAppBar = commandBarStyle;

}
...