带有 XAML 和 UWP 的 C++

C++ with XAML and UWP

很久以前我曾经使用 C++ 编写代码,现在决定重新使用它。话虽如此,我正在尝试自学一些 MS UWP 类型的应用程序,但我很难找到任何使用 C++(而不是 c#)的教程等。

我一直在试验面板,但我很难简单地显示 "flyouts"。这是我的 XAML:

  <StackPanel
    HorizontalAlignment="Stretch"
    VerticalAlignment="Stretch">

    <CommandBar x:Name="Primary_Command_Add"
                HorizontalAlignment="Stretch">
      <CommandBar.Content>
        <TextBlock x:Name="Main_Menu"
                   Text="Main Menu"
                   VerticalAlignment="Top"
                   FontSize="18"
                   Margin="12"
                   IsDoubleTapEnabled="False"
                   IsHoldingEnabled="False"
                   IsRightTapEnabled="False"
                   Tapped="Main_Menu_Tapped">

          <FlyoutBase.AttachedFlyout>
            <Flyout>
              <TextBlock Text="This should fly out" />
            </Flyout>

          </FlyoutBase.AttachedFlyout>
        </TextBlock>
      </CommandBar.Content>

    </CommandBar>

  </StackPanel>

我只想在单击 "Main Menu" 时显示弹出窗口。在我的 .cpp 中我有:

void Program::MainPage::Main_Menu_Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
{

}

现在我想我应该放 "Flyoutbase.ShowFlyout" 之类的东西,但我似乎什么都做不了。

我应该去学习 C# 吗?

要在 C++ 中显示 Flyout,您可以试试这个。

void MainPage::Main_Menu_Tapped(Platform::Object^ sender, Windows::UI::Xaml::Input::TappedRoutedEventArgs^ e)
{
    FlyoutBase::ShowAttachedFlyout((FrameworkElement ^)sender);
}

顺便说一下,要访问 UI 个元素作为变量,您可以添加 x:Name="".

XAML:

<TextBlock x:Name="My_TextBlock"/>

C++:

void MainPage::Foo()
{
    My_TextBlock->Text = L"Hello, world!";
    // or My_TextBlock->Text = ref new Platform::String(L"Hello, world!");
}