如何从 C++/CX 中的 XAML 资源获取 CommandBar?

How to get CommandBar from XAML resources in C++/CX?

我在页面资源中定义了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;

但是我得到一个错误 "Element not found"。

如果我以编程方式创建 CommandBar - 一切正常。

首先您需要从页面的资源字典中检索 CommandBar Style 资源,然后将此 commandBar 分配给 TopAppBar。

MainPage::MainPage()
{
    InitializeComponent();

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

}

您需要先删除 ResourceDictionary 中的条目,然后再将其分配给 TopAppBar,因为 Control 的实例可能不会在 XAML 树中多次出现。

MainPage::MainPage()
{
    InitializeComponent();

    Resources->Remove(L"mainCommandBar");
    TopAppBar = mainCommandBar;
}