C++ XAML 从组合框中选择的项目

C++ XAML Selected Item from ComboBox

我目前正在尝试为自己创建一个简单的 C++ Windows Phone 8.1 应用程序,但遇到了这个简单的问题。我找不到 C++ 的任何类似代码示例,仅适用于 C#。

我的代码基于一个简单的 "Hello world" 程序。在Mainpage.xaml里面我引入了下面的ComboBox

<ComboBox x:Name="AttackDice" HorizontalAlignment="Left" Height="70"   
              Margin="37,70,0,0" VerticalAlignment="Top"   
              Width="320">
        <ComboBoxItem Content="One attack dice"/>
        <ComboBoxItem Content="Two attack dice" IsSelected="True"/>
        <ComboBoxItem Content="Three attack dice" />
        <ComboBoxItem Content="Four attack dice"/>
        <ComboBoxItem Content="Five attack dice"/>
        <ComboBoxItem Content="Six attack dice"/>
</ComboBox>

我还有一个简单的按钮,它在我的 Mainpage.xaml.cpp

中触发了以下事件
void HelloWorld::MainPage::RollDice_Button_Click(Platform::Object^ sender,
    Windows::UI::Xaml::RoutedEventArgs^ e)
{
    AttackResultTextBlock->Text = "Number of dice rolled: "
 + AttackDice->SelectedItem->ToString();
}

代码应该检索选定的 ComboBoxItem,并输出选定的(攻击)骰子数。然而,输出是:

Windows.UI.Xaml.Controls.ComboBoxItem

在 C# 中,正确的做法是(根据我在网上找到的一些指南)

Text = ((ComboBoxItem)AttackDice.SelectedItem).Content.ToString();

但我不确定如何在 C++ 中执行此操作。

以下C#代码

Text = ((ComboBoxItem)AttackDice.SelectedItem).Content.ToString();

可以转换为 C++/CX。等效于 C# 中的强制转换(参见 C++/CX 中的 Casting and Type Conversions), which throws an InvalidCastException on failure, is safe_cast

Text = (safe_cast<ComboBoxItem^>(AttackDice->SelectedItem))->Content->ToString();