WPF ListBox获取选中内容 2011-07-29 12:30:44博客园 -Alsmile -点击数: 688最近项目要用wpf做,没接触过.net的c++程序员,只好开始学习wpf了。 首先,确定你的listbox的item是什么类型: 1)文本类型 一般是通过如下简单代码添加的item: listBox.Items.Add("text"); // item直接是文本 那么,获取选择文本可以如下: string selectedText = (sender as ListBox).SelectedItem.ToString(); 2)用属性里面的集合类型(通过属性面板添加的属性) 用msdn上的方式即可得到选择文本: msdn代码如下: void PrintText(object sender, SelectionChangedEventArgs args)
{ ListBoxItem lbi = ((sender as ListBox).SelectedItem as ListBoxItem); tb.Text = " You selected " + lbi.Content.ToString() + "."; }
虽然msdn上说,如果是单选模式,用SelectedItem;多选用SelectedItems。但是我还是喜欢下面的,单选多选通用。 foreach (ListBoxItem lbi in listBox.SelectedItems)
{ if (lbi != null) { string str = lbi.Content.ToString(); } }
你可以看到,用属性面板里面的“集合”添加的item,是ListBoxItem 类型,(sender as ListBox).SelectedItem 也就是这个类型。你要取它的Content属性值,这个才是显示的值。所以用代码:((sender as ListBox).SelectedItem as ListBoxItem).Content.ToString(); 得到显示的文本内容。 3)绑定的表datatable 因为你绑定的数据是表,所以你的选择项是DataRow类型,要如下操作即可: DataRow dr = ListBox.SelectedItem as DataRow; string selectedText = dr["字段"].ToString(); 4)如果你绑定数据是自定义的集合类型: 自定义数据类型 public class XXXInfo
{ public XXXInfo() { appDatabase = new ObservableCollection<string>(); } public string name { get; set; } public string path { get; set; } } public class XXXInfos { public XXXInfos() { XXXInfoList = new ObservableCollection<XXXInfos>(); } public ObservableCollection<XXXInfos> XXXInfoList { get; set; } } } ////////////////// xaml文件 <ListBox Grid.Row="2" Margin="10,10,10,10" Name="listBoxXXX" MouseDoubleClick="listBoxXXX_MouseDoubleClick" ItemsSource="{Binding Path=XXXInfoList }" > <ListBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Path=name}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 指定DataContext :这里简单用代码了。有时可以共享父控件的 listBoxXXX.DataContext = XXXInfos; 那么你的SelectItem就是: XXXInfo selected = (sender as ListBox).SelectedItem as XXXInfo ; 然后,取你自己想要的东西吧 5)其他,举一反三即可 ComboBox,及其他很多都很类似,自己领悟吧。 本文来自Alsmile的博客,原文地址:http://blog.csdn.net/Alsmile/article/details/6569980 |
|