SelectedItem、SelectedValue和SelectedValuePath的差异

SelectedItem、SelectedValue和SelectedValuePath的差异

以下几点有什么区别?

中定义了所有这些依赖项属性。选择器班级,等级。我经常混淆SelectedItem带着SelectedValue,和SelectedValue带着SelectedValuePath.

我想知道它们之间的区别,以及我们什么时候使用它们,特别是SelectedValueSelectedValuePath..请解释一下使用有一些简单的例子。


肥皂起泡泡
浏览 1081回答 3
3回答

至尊宝的传说

它们的名字可能有点混乱:)。以下是一个总结:这个选择Item属性返回绑定到的整个对象。所以假设您已经将一个列表绑定到Category对象(每个类别对象都具有名称和ID属性)。例如。ObservableCollection<Category>..这个SelectedItem属性将返回当前选定的Category对象。但是,为了绑定目的,这并不总是您想要的,因为这只使您能够将整个分类对象绑定到列表绑定到的属性,而不是绑定到该类别对象上的单个属性值(例如它的ID财产)。因此我们有SelectedValuePath属性和选择价值属性作为另一种绑定方式(您可以将它们与其他方法结合使用)。假设你有一个Product对象,该对象是您的视图绑定到的对象(带有产品名称、权重等的属性)。也可以说你有一个CategoryID属性,您希望用户能够从类别列表中为产品选择一个类别。您需要将类别对象的ID属性分配给CategoryID属性在ProductObject上。这是SelectedValuePath而SelectedValue财产进来了。指定类别对象上的ID属性应分配给列表绑定到的ProductObject上的属性SelectedValuePath='ID',然后绑定SelectedValue属性设置为DataContext上的属性(即。产品)。下面的示例说明了这一点。我们有一个ComboBox绑定到一个类别列表(通过ItemsSource)。我们将Products上的CatoryID属性绑定为所选的值(使用SelectedValue属性)。我们通过SelectedValuePath属性将其与类别的ID属性相关联。我们说的是只在ComboBox中显示Name属性,并使用DisplayMemberPath属性)。<ComboBox&nbsp;ItemsSource="{Binding&nbsp;Categories}"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectedValue="{Binding&nbsp;CategoryID,&nbsp;Mode=TwoWay}"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SelectedValuePath="ID"&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DisplayMemberPath="Name"&nbsp;/>一开始有点让人困惑,但希望这能让事情变得更清楚.*)克里斯

慕田峪7331174

为了更好地回答这个问题:SelectedValuePath定义绑定到ListBox的对象的哪个属性(按其名称)ItemsSource将用作该项目的SelectedValue.例如,如果ListBox绑定到Person对象,每个对象都有Name,&nbsp;Age,和Gender财产,SelectedValuePath=Name将导致选定的值。Person氏Name中返回的财产SelectedValue.注意,如果您重写ListBox的ControlTemplate(或应用样式)指定应该显示什么属性,SelectedValuePath不能使用。SelectedItem,同时,返回整个Person当前选定的对象。(这里MSDN的另一个示例,使用TreeView)最新情况:正如@Joe所指出的,DisplayMemberPath属性与选定的*属性无关。其适当的描述如下:请注意,这些值与DisplayMemberPath(它是在ItemsControl上定义的,而不是Selector),但该属性的行为与SelectedValuePath在没有样式/模板的情况下,它标识绑定到项的对象的哪个属性应用作其字符串表示形式。

鸿蒙传说

SelectedItem是object.&nbsp;SelectedValue和SelectedValuePath是stringS.例如,使用ListBox:如果你说给我listbox1.SelectedValue它将返回当前选定项目的文本。string&nbsp;value&nbsp;=&nbsp;listbox1.SelectedValue;如果你说给我listbox1.SelectedItem它会给你整个物体。ListItem&nbsp;item&nbsp;=&nbsp;listbox1.SelectedItem; string&nbsp;value&nbsp;=&nbsp;item.value;
打开App,查看更多内容
随时随地看视频慕课网APP