微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

wpf – SelectedItem,SelectedValue和SelectedValuePath之间的差异

以下各项之间的区别是什么:

> SelectedItem
> SelectedValue
> SelectedValuePath

所有这些依赖属性都在Selector类中定义。我经常混淆SelectedItem与SelectedValue和SelectedValue与SelectedValuePath。

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

解决方法

他们的名字可能有点混乱:)。这里是一个总结:

> SelectedItem属性返回您的列表绑定到的整个对象。所以说你已经将一个列表绑定到一个Category对象的集合(每个Category对象都有Name和ID属性)。例如。 ObservableCollection。 SelectedItem属性将返回当前选择的Category对象。但是,对于绑定目的,这并不总是你想要的,因为这只能让你绑定整个类对象到列表绑定到的属性,而不是该类对象上的单个属性的值(如其ID属性)。
>因此,我们有SelectedValuePath属性和SelectedValue属性作为一种替代的绑定手段(您使用它们彼此联合)。让我们假设你有一个Product对象,你的视图绑定到(包含ProductName,Weight等东西的属性)。我们还假设您在该Product对象上有一个CategoryID属性,并且您希望用户能够从类别列表中为产品选择一个类别。您需要将类别对象的ID属性分配给Product对象的CategoryID属性。这是SelectedValuePath和SelectedValue属性的来源。你指定Category对象的ID属性应该被赋值给Product对象的属性,列表使用SelectedValuePath =’ID’绑定到它,然后绑定SelectedValue属性到DataContext上的属性(即Product)。

下面的示例演示了这一点。我们有一个ComboBox绑定到一个类别列表(通过ItemsSource)。我们将产品上的CategoryID属性绑定为所选值(使用SelectedValue属性)。我们通过SelectedValuePath属性将它与类的ID属性相关联。我们说的只是在ComboBox显示Name属性,使用displayMemberPath属性)。

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

这是一个有点混乱最初,但希望这使它有点清晰…

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐