ベクトルドロー・レベルゼロ+

ホーム > コンピュータ > C# > WPF in C# > ListBox

[WPF in C#] ItemsSourcプロパティで項目を登録したリストボックスで選択した項目を表示する。

概要

ListBoxの中身は、入れ子になった別の要素なので、入れた要素によって取り出し方が変わるので注意が必要です。 ListBoxItemで項目を登録すると、ListBoxの中にListBoxItemが入っているので、ListBoxItemを取り出す方法で取り出す必要があります。 同じように、ItemsSourcプロパティを登録すると、ListBoxの中にItemsSourcが入っているので、ItemsSourcを取り出す方法で、取り出す必要があります。

実際のコードです。

クラスは、Windowsクラスの外に記述します。 xamlコードでは、 ItemsSourceでクラスを指定します。 DisplayMemberPathでクラスメンバを指定します。

[xaml]


<Window x:Class="Listbox04.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:src="clr-namespace:Listbox04"
        Title="MainWindow" Height="200" Width="200">

    <Window.Resources>
        <src:Customers x:Key="customers"/>
    </Window.Resources>
    
   <DockPanel>
        
        <TextBox DockPanel.Dock="Top" Name="tb" Height="30"
                 Text="{Binding ElementName=ListBox01, Path=SelectedItem.LastName}"/>
        <ListBox DockPanel.Dock="Bottom" Name="ListBox01" SelectionMode="Single"
                 ItemsSource="{StaticResource customers}" DisplayMemberPath="LastName"/>
    </DockPanel>
</Window>
				

[xaml.cs]


using System;
using System.Windows;

// ObservableCollection<T>を使用するために必要
using System.Collections.ObjectModel;   

namespace Listbox04
{
    /// <summary>
    /// MainWindow.xaml の相互作用ロジック
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            Customers myCustomers = new Customers();
        }
    } 
    /// <summary>
    /// ListBoxのアイテムを格納するクラスを作成します
    /// </summary>
    public class Customer
    {
        public String FirstName { get; set; }
        public String LastName { get; set; }
        public String Address { get; set; }

        public Customer(String firstName, String lastName, String address)
        {
            this.FirstName = firstName;
            this.LastName = lastName;
            this.Address = address;
        }
    }

    public class Customers : ObservableCollection<Customer>
    {
        public Customers()
        {
            Add(new Customer("Michael", "Anderberg",
                    "12 North Third Street, Apartment 45"));
            Add(new Customer("Chris", "Ashton",
                    "34 West Fifth Street, Apartment 67"));
            Add(new Customer("Cassie", "Hicks",
                    "56 East Seventh Street, Apartment 89"));
            Add(new Customer("Guido", "Pica",
                    "78 South Ninth Street, Apartment 10"));
        } 
    }
}

				

プログラムを実行する

起動直後の状態
起動直後の状態です
項目を選択するとTextBoxに項目が表示されます。
項目を選択するとTextBoxに表示されます。

参考サイト

動作確認環境

Microsoft Visual Studio Express 2013 for Desktop 64bit
Windows 8.1 pro 64bit
ページトップへ
ListBox
WPF in C#
C#トップ
Copyright (C) 2011-2016 kukekko All Rights Reserved.
kukekko@gmail.com
ご連絡の際はアドレスの@は半角にしてください。 また、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません 」。
inserted by FC2 system