我使用WPF。我在边框内有一个Grid,我想在触发mouseEnter时让我的网格中显示一个按钮(否则看不见)。
我可以使用e.GetPosition(myCanvas).X或Y来拖动此边框来移动所有内容。
现在我尝试访问我网格中的按钮,让它显示出来并且卡住了。
在我的MouseEnter事件中,我这样做:
UIElement source = (UIElement)sender;
但是我不能“解散”来源......没有儿童收藏。
有办法吗?
答案 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;