我正在构建一个简单的 CAD 程序。出于速度目的,我使用的是 DrawingVisuals。为了促进这一点,我创建了一个继承自 Canvas 的自定义 Canvas 类。我在这个类中覆盖了 VisualChildrenCount 和 GetVisualChild
protected List<Visual> visuals = new List<Visual>();
protected override int VisualChildrenCount
{
get { return visuals.Count; }
}
protected override Visual GetVisualChild(int index)
{
if (index < 0 || index >= visuals.Count)
throw new ArgumentOutOfRangeException("index");
return visuals[index];
}
我在我的应用程序的 ScrollViewer 控件中显示此画布。我的问题是我还希望能够将不同的 FrameworkElements 添加到我的画布中。我试过在我的画布代码中做这样的事情:
TextBox tb = new TextBox();
this.Children.Add(tb);
tb.Width = 100;
tb.Height = 100;
Canvas.SetLeft(tb, 50);
Canvas.SetTop(tb, 20);
但我的画布上什么也没有。如果我注释掉视觉覆盖,它可以正常工作并将文本框添加到我的画布中。我在这里错过了什么吗?我是否需要重写其他方法才能让 FrameworkElements 工作?我不应该将 FrameworkElement 添加到 Children 集合并将其添加到视觉对象吗?
谢谢