既出かもしれませんが備忘録として。
SelectedItems(複数選択)の取り出し方も書きました
https://qiita.com/Michio029/items/3b531acd46bb1f81f7d7
準備
MainWindow.xaml
<Window><!-- Windowの細かいのは省略 --><Grid><Grid.RowDefinitions><RowDefinitionHeight="*"/><RowDefinitionHeight="50"/></Grid.RowDefinitions><ListBoxGrid.Row="0"Name="ExampleList"Margin="10"SelectionMode="Single"ScrollViewer.VerticalScrollBarVisibility="Auto"><!-- SelectionMode="Single" :リストから一つしか選択できない --><ListBox.ItemTemplate><DataTemplate><StackPanelOrientation="Horizontal"><TextBlockText="{Binding Id, StringFormat=IDは{0} :}"/><TextBlockText="{Binding Name, StringFormat= Nameは{0} :}"/><TextBlockText="{Binding Age, StringFormat= Ageは{0}}"/></StackPanel></DataTemplate></ListBox.ItemTemplate></ListBox><ButtonGrid.Row="1"Name="Btn"Content="ボタン"Margin="100,10,100,10"Click="Btn_Click"/></Grid></Window>
<TextBlock Text="{Binding Id, StringFormat=IDは{0} :}"/>
この辺の文字列のフォーマットの書き方についてはこちらで詳しく解説してくれています。
https://qiita.com/koara-local/items/815eb5146b3ddc48a8c3
MainWindow.xaml.cs
publicpartialclassMainWindow:Window{List<ExampleClass>list=newList<ExampleClass>();publicMainWindow(){InitializeComponent();list.Add(newExampleClass(){Id=0,Name="aaa",Age=10});list.Add(newExampleClass(){Id=1,Name="bbb",Age=20});list.Add(newExampleClass(){Id=2,Name="ccc",Age=30});list.Add(newExampleClass(){Id=3,Name="ddd",Age=40});list.Add(newExampleClass(){Id=4,Name="eee",Age=50});ExampleList.ItemsSource=list;}privatevoidBtn_Click(objectsender,RoutedEventArgse){}}classExampleClass{publicintId{get;set;}publicstringName{get;set;}publicbyteAge{get;set;}}
SelectedItemを取り出す
ボタンの処理を追記します。
privatevoidBtn_Click(objectsender,RoutedEventArgse){// 選択項目が0 => メソッドを出るif(ExampleList.SelectedItems.Count==0)return;// ExampleClassとして取り出すExampleClassselitem=ExampleList.SelectedItemasExampleClass;// 中身の確認Console.WriteLine("選択中の項目 Id:{0} Name:{1} Age{2}",selitem.Id,selitem.Name,selitem.Age);}
実行結果
選択中の項目 Id:0 Name:aaa Age10
取り出せました。