为了账号安全,请及时绑定邮箱和手机立即绑定

SelectedItem、SelectedValue和SelectedValuePath的差异

SelectedItem、SelectedValue和SelectedValuePath的差异

肥皂起泡泡 2019-06-19 10:51:22
SelectedItem、SelectedValue和SelectedValuePath的差异以下几点有什么区别?选择Item选择价值SelectedValuePath中定义了所有这些依赖项属性。选择器班级,等级。我经常混淆SelectedItem带着SelectedValue,和SelectedValue带着SelectedValuePath.我想知道它们之间的区别,以及我们什么时候使用它们,特别是SelectedValue和SelectedValuePath..请解释一下使用有一些简单的例子。
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

它们的名字可能有点混乱:)。以下是一个总结:

  • 这个选择Item属性返回绑定到的整个对象。所以假设您已经将一个列表绑定到Category对象(每个类别对象都具有名称和ID属性)。例如。ObservableCollection<Category>..这个SelectedItem属性将返回当前选定的Category对象。但是,为了绑定目的,这并不总是您想要的,因为这只使您能够将整个分类对象绑定到列表绑定到的属性,而不是绑定到该类别对象上的单个属性值(例如它的ID财产)。

  • 因此我们有SelectedValuePath属性和选择价值属性作为另一种绑定方式(您可以将它们与其他方法结合使用)。假设你有一个Product对象,该对象是您的视图绑定到的对象(带有产品名称、权重等的属性)。也可以说你有一个CategoryID属性,您希望用户能够从类别列表中为产品选择一个类别。您需要将类别对象的ID属性分配给CategoryID属性在ProductObject上。这是SelectedValuePathSelectedValue财产进来了。指定类别对象上的ID属性应分配给列表绑定到的ProductObject上的属性SelectedValuePath='ID',然后绑定SelectedValue属性设置为DataContext上的属性(即。产品)。

下面的示例说明了这一点。我们有一个ComboBox绑定到一个类别列表(通过ItemsSource)。我们将Products上的CatoryID属性绑定为所选的值(使用SelectedValue属性)。我们通过SelectedValuePath属性将其与类别的ID属性相关联。我们说的是只在ComboBox中显示Name属性,并使用DisplayMemberPath属性)。

<ComboBox ItemsSource="{Binding Categories}" 
          SelectedValue="{Binding CategoryID, Mode=TwoWay}" 
          SelectedValuePath="ID" 
          DisplayMemberPath="Name" />

一开始有点让人困惑,但希望这能让事情变得更清楚.*)

克里斯


查看完整回答
反对 回复 2019-06-19
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

为了更好地回答这个问题:

SelectedValuePath定义绑定到ListBox的对象的哪个属性(按其名称)ItemsSource将用作该项目的SelectedValue.

例如,如果ListBox绑定到Person对象,每个对象都有NameAge,和Gender财产,SelectedValuePath=Name将导致选定的值。PersonName中返回的财产SelectedValue.

注意,如果您重写ListBox的ControlTemplate(或应用样式)指定应该显示什么属性,SelectedValuePath不能使用。

SelectedItem,同时,返回整个Person当前选定的对象。

(这里MSDN的另一个示例,使用TreeView)

最新情况:正如@Joe所指出的,DisplayMemberPath属性与选定的*属性无关。其适当的描述如下:

请注意,这些值与DisplayMemberPath(它是在ItemsControl上定义的,而不是Selector),但该属性的行为与SelectedValuePath在没有样式/模板的情况下,它标识绑定到项的对象的哪个属性应用作其字符串表示形式。


查看完整回答
反对 回复 2019-06-19
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

SelectedItemobjectSelectedValueSelectedValuePathstringS.

例如,使用ListBox:

如果你说给我listbox1.SelectedValue它将返回当前选定项目的文本。

string value = listbox1.SelectedValue;

如果你说给我listbox1.SelectedItem它会给你整个物体。

ListItem item = listbox1.SelectedItem;
string value = item.value;


查看完整回答
反对 回复 2019-06-19
  • 3 回答
  • 0 关注
  • 1077 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信