分享

WPF ListBox获取选中内容 ComboBox

 xyjackxjw 2013-05-14

WPF ListBox获取选中内容
2011-07-29 12:30:44博客园 -Alsmile -点击数: 688
更多0

  

  最近项目要用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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多