2016-07-17 45 views
0

'SelectedItem'プロパティは読み取り専用であり、マークアップから設定することはできません。私はどのように選択項目を得ることができますか?WPF - MVVM Treeview選択項目を取得

 <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

SimpleMatchClient

答えて

0

はこれを試してみてください選択し返す必要があります。それは動作するはずです。

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

労働者は、私はSelectedItemChanged="TreeView1_OnSelectedItemChanged"

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

} 

作品を追加し、私はそれが良い解決策

ではないと思います
関連する問題