【发布时间】:2026-01-16 21:50:01
【问题描述】:
我正在尝试实现我自己的控件,它可以承载一个或多个与控件本身相同类型的子项:
<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>()));
}
此代码是我尝试过的,但这不起作用。
如何实现可以承载相同类型子控件的自定义控件,在其中应该可以执行上述示例中的操作?
【问题讨论】:
-
我不知道你在说什么。你有什么问题?
-
感谢您的评论。我更新了我的问题,希望现在更清楚。