黑马程序员技术交流社区

标题: wpf中ComboBoxColumn的几个属性一直没整明白 [打印本页]

作者: 白夜行    时间: 2014-3-20 10:14
标题: wpf中ComboBoxColumn的几个属性一直没整明白
本帖最后由 白夜行 于 2014-3-20 16:26 编辑

其中有几个属性: SelectedValue,SelectedValuePath,SelectedItem ;如果我选中一个元素,那么它们的值分别代表什么?
数据绑定的时候为什么要绑定SelectedValue?


作者: threederek    时间: 2014-3-20 10:37
1. 这里有一个总结: SelectedItem属性返回一个列表绑定到整个对象。所以说,你已经绑定列表,以集合Category对象(每个对象类有和ID属性)。例如:。ObservableCollection<Category>。该SelectedItem当前选择的属性将返回你Category对象。然而,对于绑定的目的,这并不总是你想要的,因为这不仅可以让您将整个分类对象绑定到该列表被绑定到的属性,而不是类对象的单个属性值(如它的ID属性)。 因此,我们有SelectedValuePath属性和SelectedValue属性作为的(在另一个与他们一起)的结合。比方说,你有一个Product对象,你的视图绑定到(与类的东西重量等属性)。我们还假设你有一个CategoryID属性,产品对象上,并且要能够从分类列表中选择一个类别的产品。你需要的类别对象的ID属性被分配到CategoryID物业Product对象上。这是其中的SelectedValuePath和SelectedValue性能。您指定的类别对象的ID属性应该分配给该属性的Product对象的列表是绑定的SelectedValuePath='ID',然后绑定SelectedValue财产上的的DataContext(即产品)的财产。 下面的例子演示了这一点。我们必然要分类的列表的ComboBox(通过的ItemsSource)。我们正在结合的CategoryID属性的产品为选定的值(使用SelectedValue属性)。我们正在通过SelectedValuePath属性有关这类别的ID属性。和我们说只有在ComboBox中显示的属性,用的DisplayMemberPath属性)。
<ComboBox ItemsSource="{Binding Categories}"
   SelectedValue="{Binding CategoryID, Mode=TwoWay}"
   SelectedValuePath="ID"
   DisplayMemberPath="Name" />

这是最初一点点,但希望这使得它更清楚一点... :) 克里斯

2. 为了更概念回答一点:SelectedValuePath定义哪个属性(通过其绑定到ListBox的对象ItemsSource将作为该项目的SelectedValue。 例如,如果你的ListBox绑定到的集合Person对象,每个对象具有Name,Age和Gender性能,SelectedValuePath=Name将值选定Person的Name在要返回的属性SelectedValue。 请注意,如果你重写ListBox的ControlTemplate中(或套用样式),指定什么属性应该显示,SelectedValuePath不能SelectedItem同时,返回整个Person对象当前选定的。 (下面是从MSDN又一个例子,利用TreeView控件) 更新:由于@乔指出,该物业的DisplayMemberPath是无关的选取*属性。其正确的描述如下: 请注意,这些值都区别于DisplayMemberPath(这是在ItemsControl中,没有选择定义),但该属性也有类似的行为SelectedValuePath:在没有样式/模板,它标识绑定到项的对象的哪些属性应该为它的字符串表示形式。

3. 的SelectedItem是一个对象。 的SelectedValue是特林。 SelectedValuePath也是一个字符串。 为ListBox: 如果你说listbox1.SelectedValue它将返回当前选定项的文本。
string value = listbox1.SelectedValue;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2