Cómo: Usar SelectedValue, SelectedValuePath y SelectedItem

En este ejemplo se muestra cómo usar las propiedades SelectedValue y SelectedValuePath para especificar un valor para el SelectedItem de un objeto TreeView.

Ejemplo

La propiedad SelectedValuePath proporciona una manera de especificar un SelectedValue para el SelectedItem en un TreeView. El SelectedItem representa un objeto de la colección Items y TreeView muestra el valor de una sola propiedad del elemento seleccionado. La propiedad SelectedValuePath especifica la ruta de acceso a la propiedad que se usa para determinar el valor de la propiedad SelectedValue. Los ejemplos de este tema ilustran este concepto.

En el ejemplo siguiente se muestra un objeto XmlDataProvider que contiene información de empleado.

<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>

En el ejemplo siguiente se define un objeto HierarchicalDataTemplate que muestra el EmployeeName y el EmployeeWorkDay del Employee. Tenga en cuenta que HierarchicalDataTemplate no especifica EmployeeNumber como parte de la plantilla.

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

En el ejemplo siguiente se muestra un objeto TreeView que usa el HierarchicalDataTemplate definido previamente y que establece la propiedad SelectedValue en EmployeeNumber. Al seleccionar un EmployeeName en el TreeView, la propiedad SelectedItem devuelve el elemento de datos EmployeeInfo que corresponde al EmployeeName seleccionado. Sin embargo, dado que el valor SelectedValuePath de este TreeView se establece en EmployeeNumber, se establece SelectedValue en 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"/>

Vea también