在光标所在的位置获取的元素的属性值

时间:2016-04-26 17:48:54

标签: c# wpf

我尝试获取元素的属性值,其中光标位于TagMouseLeftButtonDownx:Name等等。使用CommandBindings按 F10 时,始终会引发Event

XAML:

<Window.CommandBindings>
    <CommandBinding Command="Open" Executed="Executesd"/>
</Window.CommandBindings>
<Window.InputBindings>
    <KeyBinding Key="F10" Command="Open"/>
</Window.InputBindings>

代码:

private void Executesd(object sender, ExecutedRoutedEventArgs e)
{
    Point mo = Mouse.GetPosition(Window);
    var TagName = Mouse.DirectlyOver;
    MessageBox.Show("Mouselogic Open-Commands: " + mo.ToString() + " -> " + TagName);
}

使用DirectlyOver我只能获得Control.Element。这不完全是我想要的。

<TextBlock MouseLeftButtonDown="MaximizeToolbar" Tag="FolderNameOrWhatever">Test</TextBlock>

我没有使用Windows.Forms。使用Tag="FolderNameOrWhatever"我想处理一个动作。当孩子找不到Tag时,我也需要父母Tag

我发现谷歌没有找到适合我的问题,将元素attributsname设置为我的光标所在的值。

是的,有人可以帮忙吗?我是C#的新手。在JS中我可以解决它,但C#非常不同。

1 个答案:

答案 0 :(得分:0)

解决:

private void Executesd(object sender, ExecutedRoutedEventArgs e)
{
     Point mo = Mouse.GetPosition((UIElement)sender);

     FrameworkElement Happy = Mouse.DirectlyOver as FrameworkElement;
     MessageBox.Show("Mouselogic: " + mo.ToString() + " -> " + Happy.Tag);
}

使用VisualTreeHelper的另一种方法是这样(不是完整代码):

.....
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(this); i++)
{
    Visual VisualChild = (Visual)VisualTreeHelper.GetChild(this, i);

    FrameworkElement Child = VisualChild as FrameworkElement;

    MessageBox.Show("Tag " + i + ": "+ Child.Tag +", Name: "+ Child.Name);
}
.....