2017-01-10 3 views
0

hallo ich bin schön neu C# wpf, habe ich eine TreeView, die zur Laufzeit besiedelt und hier ist mein XAML-Codewpf TextBlock- Fokus auf der Maus rechts klicken

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

, was ich will, wenn ich rechts klicken der Textblock, der sich in der Baumansicht befindet. Der Textblock muss fokussiert sein. Ab sofort zeigt es den Kontextmenüpunkt an.

Wie bekomme ich den Index des Rechtsklick-Textblocks? damit ich mich auf diesen Gegenstand konzentrieren kann. Danke

Antwort

1

A TextBlock- kann nicht fokussiert werden ... aber man kann durch Gießen des Absenders Argument einen Verweis darauf in der Mouseeventhandler erhalten:

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

Wenn Sie im Rahmen eines TreeView sind Möglicherweise möchten Sie das übergeordnete TreeViewItem auswählen:

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); 
}