2016-07-17 14 views
0

'SelectedItem' Eigenschaft ist schreibgeschützt und kann nicht aus Markup gesetzt werden. Wie kann ich ausgewählte Artikel bekommen?WPF - MVVM Treeview erhalten ausgewählten Artikel

 <TreeView x:Name="TreeView1" 
       ItemsSource="{Binding Path=Champ}"> 

     <TreeView.Resources> 
      <HierarchicalDataTemplate DataType="{x:Type self:SimpleChampionship}" ItemsSource="{Binding Path=Tours}"> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Path=Name}" /> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
      <HierarchicalDataTemplate DataType="{x:Type self:SimpleTourClient}" ItemsSource="{Binding Path=Matches}"> 
       <StackPanel Orientation="Horizontal" > 
        <TextBlock Text="Tour:" /> 
        <TextBlock Text="{Binding Path=NameTour}" /> 
        <TextBlock Text=" Matches [" /> 
        <TextBlock Text="{Binding Path=Matches.Count}" /> 
        <TextBlock Text="]" /> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
      <HierarchicalDataTemplate DataType="{x:Type self:SimpleMatchClient}"> 

       <StackPanel Orientation="Horizontal" > 

        <TextBlock Text="{Binding Path=Home}" /> 
        <TextBlock Text="{Binding Path=HomeTeamGoals}" /> 
        <TextBlock Text=" - " /> 
        <TextBlock Text="{Binding Path=GuestTeamGoals}" /> 
        <TextBlock Text="{Binding Path=Guest}" /> 
       </StackPanel> 

      </HierarchicalDataTemplate> 

     </TreeView.Resources> 
    </TreeView> 

example treeview

Rückkehr benötigen diese SimpleMatchClient ausgewählt

Antwort

0

Versuchen. Es sollte funktionieren.

var treeViewItem = TreeView1.ItemContainerGenerator.ContainerFromItem(SelectedItem) as TreeViewItem; 
0

Arbeiter, fügen i SelectedItemChanged="TreeView1_OnSelectedItemChanged" und

private void TreeView1_OnSelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e) 
{ 
    var dc = DataContext as MainWindowViewModel; 
    try 
    { 
     dc.SelectedMatch = (SimpleMatchClient)e.NewValue; 
    } 
    catch (Exception) 
    { 
     return; 
    } 

} 

funktioniert, aber ich denke, es ist nicht gut Lösung