[英]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.