Инструкция по Использованию SelectedValue, SelectedValuePath и SelectedItem

В этом примере показано, как использовать свойства SelectedValue и SelectedValuePath для указания значения SelectedItem объекта TreeView.

Пример

Свойство SelectedValuePath позволяет указать SelectedValue для элемента SelectedItem в объекте TreeView. 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>

В следующем примере определяется объект HierarchicalDataTemplate, отображающий свойства EmployeeName и EmployeeWorkDay из объекта Employee. Обратите внимание, что HierarchicalDataTemplate не задает EmployeeNumber как часть шаблона.

<HierarchicalDataTemplate x:Key="SampleTemplate" DataType="EmployeeInfo" 
  ItemsSource ="{Binding XPath=EmployeeWorkDay}">
  <TextBlock Text="{Binding XPath=EmployeeName}" />
</HierarchicalDataTemplate>

В следующем примере показан элемент TreeView, который использует ранее определенный шаблон HierarchicalDataTemplate и задает значение EmployeeNumber для свойства SelectedValue. При выборе элемента EmployeeName в объекте TreeView свойство SelectedItem возвращает элемент данных EmployeeInfo, соответствующий выбранному свойству EmployeeName. Однако, так как для свойства SelectedValuePath этого объекта TreeView задано значение 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"/>

См. также