WPF在MouseEnter事件上修改UIElement

时间:2016-12-21 21:32:41

标签: c# wpf shapes

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

我可以使用e.GetPosition(myCanvas).X或Y来拖动此边框来移动所有内容。

现在我尝试访问我网格中的按钮,让它显示出来并且卡住了。

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

UIElement source = (UIElement)sender;

但是我不能“解散”来源......没有儿童收藏。

有办法吗?

3 个答案:

答案 0 :(得分:1)

Border类没有Children属性,但它有一个Child属性,只要Border的子节点实际上是一个Grid,就可以强制转换为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。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我没想到在网格上做mouseenter。它就像魅力一样。 我现在可以继续。

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