我正在尝试实现我自己的控件,它可以承载一个或多个与控件本身相同类型的子项:
<local:MyControl x:Name="control1">
<local:MyControl x:Name="control2">
<local:MyControl x:Name="control3">
<local:MyControl x:Name="control4">
<local:MyControl x:Name="control5">
<local:MyControl x:Name="control6">
<local:MyControl x:Name="control7"/>
</local:MyControl>
</local:MyControl>
</local:MyControl>
</local:MyControl>
</local:MyControl>
</local:MyControl>
我遇到的问题是只有第一个实例被称为root
,其他实例是第一个实例的子级。他们甚至可能是彼此的孩子。
这里是 MyControl 类的代码:
[ContentProperty("MyChildren")]
class MyControl : ItemsControl
{
public List<MyControl> MyChildren
{
get { return (List<MyControl>)GetValue(MyChildrenProperty); }
set { SetValue(MyChildrenProperty, value); }
}
// Using a DependencyProperty as the backing store for Children. This enables animation, styling, binding, etc...
public static readonly DependencyProperty MyChildrenProperty =
DependencyProperty.Register("MyChildren", typeof(List<MyControl>), typeof(MyControl), new UIPropertyMetadata(new List<MyControl>()));
}
这段代码是我尝试过的,但这不起作用。
如何实现可以托管相同类型的子控件的自定义控件,其中应该可以执行上述示例中的操作?