2014-06-16 2 views
1

TreeView에서도 더블 클릭을 정의하여 TreeView의 항목을 선택하고 제목을 알 수 있습니다. 제목을 얻으려고하면 "MyProject.MenuItem"이 표시됩니다. 트리에서 선택한 항목을 참조하고 루트가 아닌지 확인한 다음 제목을 얻으려면 어떻게해야합니까? 내가 무슨 짓을 : 메시지 박스가 나는 메시지 박스가 표시되지해야하지만, 확인 후, 선택된 트 리뷰 항목의 제목을 얻기 위해 원하는 "MyProject.MenuItem"을 보여줍니다TreeView 더블 클릭 이벤트

<TreeView Name="trvMenu" HorizontalAlignment="Left" Height="312" VerticalAlignment="Top" Width="200" MouseDoubleClick="TreeView_MouseDoubleClick" > 
     <TreeView.ItemTemplate> 
       <HierarchicalDataTemplate DataType="{x:Type local:MenuItem}" ItemsSource="{Binding Items}"> 
        <TextBlock Text="{Binding Title}" /> 
       </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
</TreeView> 

는 루트가 아닌

private void TreeView_MouseDoubleClick(object sender, RoutedEventArgs e) 
    { 
     if (sender is TreeViewItem) 
      if (!((TreeViewItem)sender).IsSelected) 
       return; 
     TreeViewItem tviSender = sender as TreeViewItem; 
     MessageBox.Show(trvMenu.SelectedItem.ToString()); 
    } 
+0

그래서 코드 숨김에서 TreeView의 자식 요소에 액세스해야합니까? –

+0

http://stackoverflow.com/questions/24197633/recursively-collapse-all-child-nodes-of-parent-node-in-custom-usercontrol/24197901#24197901 – Sajeetharan

+0

예, 하위 요소는 런타임에 추가되며 코드 숨김에서 타이틀을 얻고 싶습니다. @RobertLangdon – Yona

답변

1

아래와 같이 더블 클릭 처리기를 변경하십시오. ToString을 호출하는 대신 MenuItem 항목 클래스의 Title 속성에 액세스합니다.

private void TreeView_MouseDoubleClick(object sender, RoutedEventArgs e) 
{ 
    var menuItem = trvMenu.SelectedItem as MyProject.MenuItem; 

    if (menuItem != null) 
    { 
     MessageBox.Show(menuItem.Title); 
    } 
} 
+0

"Title"을 인식하지 못하고 어떤 주조에도 굴하지 않았습니다. _ < – Yona

+0

ok, MessageBox.Show ((MenuItem) trvMenu.SelectedItem). 제목); "하지만 지금은 그렇지 않습니다. 심지어 메시지 상자를 보여주십시오 .. – Yona

+0

그냥 MessaBox.Show 줄에 중단 점을 놓고 trvMenu.SelectedItem을 검사하여 그 객체가 – Krishna

관련 문제