WPF 在 MouseEnter 事件上修改 UIElement

WPF Modifying an UIElement on a MouseEnter Event

我使用 WPF。我在边框内有一个网格,我想让在触发 mouseEnter 时在我的网格内显示一个按钮(否则不可见)。

我可以拖动这个边框来玩 e.GetPosition(myCanvas).X 或 Y 来移动所有东西。

现在我尝试访问我的网格内的按钮以让它显示,但我卡住了。

在我的 MouseEnter 事件中我这样做了:

UIElement source = (UIElement)sender;

但我无法"dissociate"来源...没有子集。

有办法吗?

您可能希望在表单上创建一个 DependencyProperty,您可以将按钮的可见性 属性 绑定到该属性。然后在边框的MouseEnter 和MouseLeave 中,设置DependencyProperty。

Border class 没有 Children 属性 但它有一个 Child 属性,您可以将其转换为 Grid,前提是 Border 的 child 实际上是一个 Grid:

Border border = (Border)sender;
Grid grid = border.Child as Grid;
if (grid != null)
{
    Button button = grid.Children[0] as Button;
    if(button != null)
       button.Visibility = Visibility.Visible;
}

如果您正在处理 Border 元素的 MouseEnter 事件并且 Border 内的 Grid 包含 Button 元素,则此代码应该有效。如果您正在处理 Grid 的 MouseEnter 元素,您当然应该将 sender 参数直接转换为 Grid。

我没想过在网格上执行 mouseenter。它就像魅力一样。 我现在可以继续了。

Grid sourceG = (Grid)sender;
sourceG.Children[0].Visibility = Visibility.Visible;