次によく使われる機能を実装します。ListBox に動的に項目を追加する機能です。ボタンをクリックすると ListBox の Items に新しい項目を挿入する仕組みで、多くのソフトウェアで活用されています。
まず XAML に ListBox とボタンを記述します
<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 を操作するため、x:Name=”myListBox” で名前を付ける必要があります。
F12 キーを押すとイベント処理関数が自動作成されます。
void winrt::App6::implementation::MainWindow::Button_Click(
winrt::Windows::Foundation::IInspectable const& sender,
winrt::Microsoft::UI::Xaml::RoutedEventArgs const& e)
{
// ListBox の Items コレクションを取得
auto itemCollection = myListBox().Items();
itemCollection.Append(box_value(L"新規項目"));
}Code language: C++ (cpp)
イベント関数内では x:Name=”myListBox” のコントロールオブジェクトを取得し、Items コレクションを呼び出して Append で要素を末尾に追加します。
WinUI 3 C++ コントロール編 – ListBox に Items を動的追加