如何:使用 SelectedValue、SelectedValuePath 和 SelectedItem
此示例演示如何使用 SelectedValue 和 SelectedValuePath 属性为 TreeView 的 SelectedItem 指定值。
示例
SelectedValuePath 属性提供了为 TreeView 中的 SelectedItem 指定 SelectedValue 的方法。 SelectedItem 表示 Items 集合中的对象,TreeView 显示选定项的单个属性的值。 SelectedValuePath 属性指定用于确定 SelectedValue 属性的值的属性的路径。 本主题中的示例说明了此概念。
下面的示例演示包含员工信息的 XmlDataProvider。
<XmlDataProvider x:Key="myEmployeeData" XPath="/EmployeeData">
<x:XData>
<EmployeeData xmlns="">
<EmployeeInfo>
<EmployeeName>Jesper Aabergy</EmployeeName>
<EmployeeWorkDay>Monday</EmployeeWorkDay>
<EmployeeWorkDay>Wednesday</EmployeeWorkDay>
<EmployeeWorkDay>Friday</EmployeeWorkDay>
<EmployeeStartTime>8:00am</EmployeeStartTime>
<EmployeeNumber>12345</EmployeeNumber>
</EmployeeInfo>
<EmployeeInfo>
<EmployeeName>Dominik Paiha</EmployeeName>
<EmployeeWorkDay>Monday</EmployeeWorkDay>
<EmployeeWorkDay>Tuesday</EmployeeWorkDay>
<EmployeeStartTime>6:30am</EmployeeStartTime>
<EmployeeNumber>98765</EmployeeNumber>
</EmployeeInfo>
</EmployeeData>
</x:XData>
</XmlDataProvider>
下面的示例定义了显示 Employee
的 EmployeeName
和 EmployeeWorkDay
的 HierarchicalDataTemplate。 请注意,HierarchicalDataTemplate 不会将 EmployeeNumber
指定为模板的一部分。
<HierarchicalDataTemplate x:Key="SampleTemplate" DataType="EmployeeInfo"
ItemsSource ="{Binding XPath=EmployeeWorkDay}">
<TextBlock Text="{Binding XPath=EmployeeName}" />
</HierarchicalDataTemplate>
下面的示例演示一个 TreeView,它使用以前定义的 HierarchicalDataTemplate,并将 SelectedValue 属性设置为 EmployeeNumber
。 在 TreeView 中选择 EmployeeName
时,SelectedItem 属性将返回与所选 EmployeeName
对应的 EmployeeInfo
数据项。 但是,由于此 TreeView 的 SelectedValuePath 设置为 EmployeeNumber
,因此 SelectedValue 设置为 EmployeeNumber
。
<TreeView ItemsSource="{Binding Source={StaticResource myEmployeeData},
ItemTemplate={StaticResource SampleTemplate},
XPath=EmployeeInfo}"
Name="myTreeView"
SelectedValuePath="EmployeeNumber"
/>
<TextBlock Margin="10">SelectedValuePath: </TextBlock>
<TextBlock Margin="10,0,0,0"
Text="{Binding ElementName=myTreeView,
Path=SelectedValuePath}"
Foreground="Blue"/>
<TextBlock Margin="10">SelectedValue: </TextBlock>
<TextBlock Margin="10,0,0,0"
Text="{Binding ElementName=myTreeView,
Path=SelectedValue}"
Foreground="Blue"/>