> 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] 举报,一经查实,本站将立刻删除。