2017-01-10 3 views
0

안녕하세요, 여기 런타임에 채워되는 트 리뷰는마우스 오른쪽 버튼을 클릭

<StackPanel Orientation="Horizontal"> 
    <Image Source="Properties\accessories-text-editor-6.ico" Margin="0,0,5,0" /> 
    <TextBlock Text="{Binding Name}" Foreground="Green" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown" MouseRightButtonDown="TextBlock_MouseRightButtonDown" > 
     <TextBlock.ContextMenu> 
      <ContextMenu> 
       <MenuItem Header="HeadLine" ></MenuItem> 
       <MenuItem Header="Textblock" ></MenuItem> 
       <MenuItem Header="Author" ></MenuItem> 
       <MenuItem Header="PageNumber" ></MenuItem> 
       <MenuItem Header="RunningTitle" ></MenuItem> 
       <MenuItem Header="Illustration" ></MenuItem> 
      </ContextMenu> 
     </TextBlock.ContextMenu> 
    </TextBlock> 
</StackPanel> 

내가 바로 클릭 할 때 내가 원하는 것은 내 XAML 코드의 C#을 WPF 꽤 새로운 한 있어요 treeview 안에있는 텍스트 블록. 텍스트 블록을 집중해야합니다. 현재로서는 컨텍스트 메뉴 항목을 보여줍니다.

어떻게 마우스 오른쪽 버튼으로 클릭 한 텍스트 블록의 색인을 가져 옵니까? 그래서 그 아이템에 집중할 수 있습니다. 는

답변

1

TextBlock의 집중 할 수없는 주셔서 감사합니다 ...하지만 당신이 보낸 인수 캐스팅하여 MouseRightButtonDown 이벤트 처리기에 대한 참조를 얻을 수 있습니다 : 당신이 트 리뷰의 상황에있는 경우

private void TextBlock_MouseRightButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    TextBlock txt = sender as TextBlock; 
    //do whatever you want with the TextBlock... 
} 

을 상위 TreeViewItem을 선택하는 것이 좋습니다.

private void TextBlock_MouseRightButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    TextBlock txt = sender as TextBlock; 
    TreeViewItem tvi = FindParent<TreeViewItem>(txt); 
    if (tvi != null) 
     tvi.IsSelected = true; 
} 

private static T FindParent<T>(DependencyObject dependencyObject) where T : DependencyObject 
{ 
    var parent = VisualTreeHelper.GetParent(dependencyObject); 

    if (parent == null) return null; 

    var parentT = parent as T; 
    return parentT ?? FindParent<T>(parent); 
} 
관련 문제