Compartir a través de


Cómo: Usar SelectedValue, SelectedValuePath y SelectedItem

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

Ejemplo

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

En el ejemplo siguiente se muestra un 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 HierarchicalDataTemplate que muestra el EmployeeName y el EmployeeWorkDay de 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 siguiente ejemplo se muestra un TreeView que utiliza el HierarchicalDataTemplate definido anteriormente y que establece la propiedad SelectedValue al EmployeeNumber. Cuando seleccionas un EmployeeName en el TreeView, la propiedad SelectedItem devuelve el ítem de datos EmployeeInfo que corresponde al EmployeeName seleccionado. Sin embargo, dado que el SelectedValuePath de este TreeView se establece en EmployeeNumber, el SelectedValue se establece en el 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"/>

Consulte también