概要
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に表示されます。
参考サイト
ListBox にデータを表示する[msdn](外部サイト)
WPFのListBoxで、リスト内の要素をItemsSourceプロパティを使用して登録する
Listboxに、DataBindingを使用して、Listboxで選択した要素をTextBoxに表示します。
WPFのListBoxで、選択した要素をTextBoxに表示します。
動作確認環境
Microsoft Visual Studio Express 2013 for Desktop 64bit
Windows 8.1 pro 64bit
Windows 8.1 pro 64bit