Naw*_*waz 335 silverlight wpf xaml selectedvalue selecteditem
以下是有什么区别的:
所有这些依赖项属性都在Selector类中定义.我经常混淆SelectedItem
与SelectedValue
,并SelectedValue
用SelectedValuePath
.
我想知道它们之间的区别,并且当我们使用它们,尤其是SelectedValue
和SelectedValuePath
.请用一些简单的例子解释它们的用法.
Chr*_*son 526
他们的名字可能有点令人困惑:).这是一个总结:
的的SelectedItem属性返回列表绑定到整个对象.所以说你已经将一个列表绑定到一个Category
对象集合(每个Category对象都有Name和ID属性).例如.ObservableCollection<Category>
.该SelectedItem
属性将返回当前选定的Category
对象.但是,出于绑定目的,这并不总是您想要的,因为这只能使您将整个Category对象绑定到列表绑定的属性,而不是该Category对象上的单个属性的值(例如其ID
属性) ).
因此,我们将SelectedValuePath属性和SelectedValue属性作为替代绑定方式(您将它们彼此结合使用).假设您有一个Product
对象,您的视图必须绑定(使用ProductName,Weight等属性).我们还假设您CategoryID
在该Product对象上有一个属性,并且您希望用户能够从类别列表中选择产品的类别.您需要将Category对象的ID属性分配给CategoryID
Product对象上的属性.这是属性SelectedValuePath
和SelectedValue
属性的来源.您指定应将Category对象上的ID属性分配给列表绑定使用的Product对象上的属性SelectedValuePath='ID'
,然后将该SelectedValue
属性绑定到DataContext上的属性(即产品).
以下示例演示了这一点.我们有一个ComboBox绑定到Categories列表(通过ItemsSource).我们将Product上的CategoryID属性绑定为选定值(使用SelectedValue属性).我们通过SelectedValuePath属性将其与Category的ID属性相关联.我们只是说使用DisplayMemberPath属性在ComboBox中显示Name属性.
<ComboBox ItemsSource="{Binding Categories}"
SelectedValue="{Binding CategoryID, Mode=TwoWay}"
SelectedValuePath="ID"
DisplayMemberPath="Name" />
Run Code Online (Sandbox Code Playgroud)
最初有点令人困惑,但希望这会让它更清晰...... :)
克里斯
Dan*_*n J 65
从概念上回答一下:
SelectedValuePath
定义绑定到ListBox的对象的哪个属性(通过其名称)ItemsSource
将用作项目SelectedValue
.
例如,如果你的列表框被绑定到的集合Person
的对象,其每一个具有的Name
,Age
和Gender
属性,SelectedValuePath=Name
将导致所选的值Person
的Name
在要被返回的属性SelectedValue
.
请注意,如果覆盖ListBox的ControlTemplate(或应用样式),指定应显示哪个属性,SelectedValuePath
则无法使用.
SelectedItem
同时,返回Person
当前选中的整个对象.
(这是MSDN的另一个例子,使用TreeView)
更新:正如@Joe指出的那样,DisplayMemberPath属性与Selected*属性无关.其正确描述如下:
请注意,这些值不同于DisplayMemberPath
(在ItemsControl上定义,而不是Selector),但该属性具有类似的行为SelectedValuePath
:在没有样式/模板的情况下,它标识绑定到item的对象的哪个属性应该用作其字符串表示.
SelectedItem
是一个object
.
SelectedValue
并且SelectedValuePath
是string
.
例如使用ListBox:
如果你说给我listbox1.SelectedValue
它将返回当前所选项目的文本.
string value = listbox1.SelectedValue;
Run Code Online (Sandbox Code Playgroud)
如果你说给我listbox1.SelectedItem
它会给你整个对象.
ListItem item = listbox1.SelectedItem;
string value = item.value;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
225693 次 |
最近记录: |