public class VisualPanel : FrameworkElement
{
protected VisualCollection Children { get; set; }
public VisualPanel()
{
Children = new VisualCollection(this);
}
protected override int VisualChildrenCount
{
get
{
return Children.Count;
}
}
protected override Visual GetVisualChild(int index)
{
return Children[index];
}
protected override Size ArrangeOverride(Size finalSize)
{
if (VisualChildrenCount>0)
{
(Children[0] as FrameworkElement).Arrange(new Rect(0, 0, 100, 25));
}
return base.ArrangeOverride(finalSize);
} }
添加元素,并将加入到Window窗体中
public class VisualTest : VisualPanel
{
public TextBlock textblock;
private void TestVisual()
{
textblock = new TextBlock() { Text = "Hello", Background = Brushes.Red }; this.Children.Add(textblock);
}
public VisualTest()
{
TestVisual();
}
}