簡體   English   中英

如何在 WinUI3 C++/WinRT 中從 ComboBox 獲取用戶選擇項?

[英]How do I get the user selection item from a ComboBox in WinUI3 C++/WinRT?

我想在 WinUI3 C++/WinRT 中從 ComboBox 獲取選定的用戶項。 XAML中有這段代碼:

<ComboBox x:Name="ComboTranslate" HorizontalAlignment="Center" Header="Translate to" SelectionChanged="ComboBox_SelectionChanged" SelectedIndex="0" Width="200" Margin="0,15,0,0">
        <x:String>2</x:String>
        <x:String>8</x:String>
        <x:String>10</x:String>
        <x:String>16</x:String>
</ComboBox>

在WinUI3中的C#中是這樣實現的:

private void ColorComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // Add "using Windows.UI;" for Color and Colors.
    string colorName = e.AddedItems[0].ToString();
    Color color;
    switch (colorName)
    {
        case "Yellow":
            color = Colors.Yellow;
            break;
        case "Green":
            color = Colors.Green;
            break;
        case "Blue":
            color = Colors.Blue;
            break;
        case "Red":
            color = Colors.Red;
            break;
    }
    colorRectangle.Fill = new SolidColorBrush(color);
}

如何在 C++/WinRT 上執行此操作?

以下是我如何使用 SelectedIndex() 方法在我的寵物項目 PopUpButton class 上執行此操作:

void
CAUIPopUpButton::HandleHostSelectionChangedEvent(
    Windows::Foundation::IInspectable const & /* sender */,
    Windows::UI::Xaml::Controls::SelectionChangedEventArgs const & /* event */ )
{
    M_LOG_METHOD( HandleHostSelectionChangedEvent )

    TIndex newSelectedItem;

    newSelectedItem = _hUIElement.as< Windows::UI::Xaml::Controls::ComboBox >().SelectedIndex();

    ValueChanged( newSelectedItem );
}

基本上,我沒有使用發送者和事件的信息,因為我手動將事件處理程序連接到 ComboBox,即上面代碼中的 _hUIElement。

_hUIElement = Windows::UI::Xaml::Controls::ComboBox();
_hUIElement.as< Windows::UI::Xaml::Controls::ComboBox >().SelectionChanged( { this, & CAUIPopUpButton::HandleHostSelectionChangedEvent } );

請不要評判我的 C++ 風格:我有點守舊,不是 XAML 的忠實粉絲!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM