Теперь реализуем часто используемую функцию: динамическое добавление элементов в ListBox. При нажатии кнопки мы вставляем новый элемент в коллекцию Items списка ListBox, эта возможность присутствует во многих программах.
Сначала добавьте ListBox и кнопку в разметку XAML
<Border Padding="14" BorderThickness="1" BorderBrush="Gray" CornerRadius="8">
<StackPanel Spacing="12">
<TextBlock Text="5. ListBox - Список фиксированной высоты (одинарный/множественный выбор)" FontWeight="SemiBold" FontSize="14" Margin="0,0,0,8"/>
<Button Content="Добавить элемент" Click="Button_Click"/>
<ListBox Width="280" Height="140" x:Name="myListBox" SelectionMode="Multiple">
<ListBoxItem Content="Документы"/>
<ListBoxItem Content="Изображения"/>
<ListBoxItem Content="Видео"/>
<ListBoxItem Content="Аудио"/>
<ListBoxItem Content="Установщики"/>
</ListBox>
</StackPanel>
</Border>Code language: C++ (cpp)
Мы добавили кнопку; при клике создаётся новый элемент ListBoxItem. Чтобы работать с ListBox из кода на C++, ему нужно присвоить имя x:Name=»myListBox»
Нажмите F12 для автоматической генерации обработчика события нажатия.
void winrt::App6::implementation::MainWindow::Button_Click(
winrt::Windows::Foundation::IInspectable const& sender,
winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
{
// Получить коллекцию Items элемента ListBox
auto itemCollection = myListBox().Items();
itemCollection.Append(box_value(L"Новый элемент"));
}Code language: C++ (cpp)
В функции обработчика сначала получаем экземпляр элемента с именем x:Name=»myListBox», извлекаем коллекцию Items и вызываем Append для добавления нового содержимого.
Элементы управления WinUI 3 C++ – Динамическое добавление элементов в ListBox