我已经有一个自定义 Canvas 类,我在其中重写了“OnMoseDown”方法。但现在我也想覆盖 'Children.Add' 方法。但我没有找到任何解决方案。
当孩子被添加到画布时,我想获得 Child.ActualWidth 。
谢谢。
我已经有一个自定义 Canvas 类,我在其中重写了“OnMoseDown”方法。但现在我也想覆盖 'Children.Add' 方法。但我没有找到任何解决方案。
当孩子被添加到画布时,我想获得 Child.ActualWidth 。
谢谢。
我自己找到了答案。希望这可以在某一天对某人有所帮助。
刚刚在我的自定义类中添加了一个 Add 方法
public void Add(UserControl element)
{
bool alreadyExist = false;
element.Uid = element.Name;
foreach (UIElement child in this.Children)
{
if (child.Uid == element.Uid)
{
alreadyExist = true;
this.BringToFront(child);
}
}
if (!alreadyExist)
{
this.Children.Add(element);
this.UpdateLayout();
double top = (this.ActualHeight - element.ActualHeight) / 2;
double left = (this.ActualWidth - element.ActualWidth) / 2;
Canvas.SetLeft(element, left);
Canvas.SetTop(element, top);
}
}
这可能无法正常工作。一个孩子将在设置之前被添加ActualWidth
,因为该属性是在布局阶段设置的。
根据您在此处的目标,您可能需要考虑覆盖MeasureOverride
andArrangeOverride
并制作自定义布局面板而不是子类化Canvas
.