[WinUI 3][ListBox] 選択されているアイテムを取得する

スポンサーリンク

この記事では ListBox で選択されているアイテムを取得する方法について説明をします。

公式サイト情報はコチラを参照してください。

環境

開発環境 Microsoft Visual Studio Enterprise 2019
Version 16.11.5
Framework Microsoft .NET Framewohttps://blog.hiros-dot.net/?p=11007rk Version 4.8.04161

選択されているアイテムを取得する

ListBox 上で選択されているアイテムは、SelectedItems プロパティ に格納されています。

以下の例では、ListBox 上で選択されている全てのアイテムを取得する例です。
XAML の例

<Window
    x:Class="WinUISample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:WinUISample"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    <StackPanel Orientation="Vertical" HorizontalAlignment="Center">

        <ListBox x:Name="myListBox"
                 SelectionMode="Multiple"
                 ItemsSource="{x:Bind employees}"
                 DisplayMemberPath="Name" />

        <TextBlock x:Name="myTextBlock" />
        <Button x:Name="myButton" Content="選択アイテムを取得" Click="myButton_Click"/>
    </StackPanel>
</Window>

C# の例

using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using System.Collections.ObjectModel;

// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.

namespace WinUISample
{
    /// <summary>
    /// An empty window that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainWindow : Window
    {
        ObservableCollection<Employee> employees = new ObservableCollection<Employee>();

        public MainWindow()
        {
            this.InitializeComponent();

            // アイテムを複数選択できるようにする
            myListBox.SelectionMode = SelectionMode.Multiple;

            for (int i = 1; i <= 3; i++) 
            { 
                Employee employee = new Employee(); 
                employee.Name = $"User{i.ToString()}"; 
                employees.Add(employee);
            }
        }

        private void myButton_Click(object sender, RoutedEventArgs e)
        {
            myTextBlock.Text = string.Empty;

            // 選択されているすべてのアイテムを取得
            foreach (Employee item in myListBox.SelectedItems)
            {
                myTextBlock.Text += $"{item.Name}\n";
            }
        }

        public class Employee
        {
            public string Name { get; set; }
        }
    }
}

[選択されたアイテムを取得] ボタンがクリックされたときに foreach を使用して SelectedItems プロパティからアイテムを1つずつ取り出して TextBlock に表示します。

選択されたアイテムを取得して表示する例

選択されたアイテムを取得して表示する例

選択されているアイテム数をカウントする

ちなみに、選択されているアイテムの数は SelectedItems.Count で取得することができます。

WinUi Tips

本サイトでまとめている WinUI Tips の一覧はこちらから確認できます。

Please follow and like us:

コメント

タイトルとURLをコピーしました