您的位置:首页 > 其它

wpf ListBox获取选中内容 ComboBox

2011-06-27 12:46 1226 查看
最近项目要用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类型,要如下操作即可:

DataRowView dr = ListBox.SelectedItem as DataRowView;

string selectedText = dr["字段"].ToString();

4)如果你绑定数据是自定义的集合类型:

自定义数据类型

namespace XXX

{

// 注意,需要绑定控件item并显示的成员,请用属性,不要用公有变量,否则,绑定数据时,将显示空白(我在.net3.5下是这样)

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,及其他很多都很类似,自己领悟吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: