Gewusst wie: Verwendung von SelectedValue, SelectedValuePath und SelectedItem

In diesem Beispiel wird gezeigt, wie Sie die Eigenschaften SelectedValue und SelectedValuePath verwenden, um einen Wert für das SelectedItem einer TreeView festzulegen.

Beispiel

Die Eigenschaft SelectedValuePath bietet eine Möglichkeit, einen SelectedValue für das SelectedItem in einer TreeView festzulegen. Das SelectedItem stellt ein Objekt in der Items-Sammlung dar und die TreeView zeigt den Wert einer einzelnen Eigenschaft des ausgewählten Elements an. Die SelectedValuePath-Eigenschaft gibt den Pfad zu der Eigenschaft an, die verwendet wird, um den Wert der SelectedValue-Eigenschaft zu bestimmen. Die Beispiele in diesem Thema veranschaulichen dieses Konzept.

Im folgenden Beispiel wird ein XmlDataProvider gezeigt, das Mitarbeiterinformationen enthält.

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

Im folgenden Beispiel wird ein HierarchicalDataTemplate Objekt definiert, das den EmployeeName und den EmployeeWorkDay des Employee anzeigt. Beachten Sie, dass die HierarchicalDataTemplate nicht die EmployeeNumber als Teil der Vorlage spezifiziert.

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

Im folgenden Beispiel wird eine TreeView gezeigt, die die zuvor definierte HierarchicalDataTemplate verwendet und die Eigenschaft SelectedValue auf EmployeeNumber festlegt. Wenn Sie einen EmployeeName in der TreeView auswählen, gibt die SelectedItem-Eigenschaft das EmployeeInfo-Datenelement zurück, das dem ausgewählten EmployeeNameentspricht. Da der SelectedValuePath dieser TreeView jedoch auf EmployeeNumber festgelegt ist, wird der SelectedValue auf die EmployeeNumber festgelegt.

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

Weitere Informationen