Home > C# > WPF > WPFコントロール > Listbox

WPFのListBoxで、ItemsSourceプロパティを使用して登録したリスト内の要素を選択しTextBoxに表示する

概要

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
このエントリーをはてなブックマークに追加

Home PC C# Illustration

Copyright (C) 2011 Horio Kazuhiko(kukekko) All Rights Reserved.
kukekko@gmail.com
ご連絡の際は、お問い合わせページのURLの明記をお願いします。
「掲載内容は私自身の見解であり、所属する組織を代表するものではありません。」