我想创建一个UserControl
,它会有一些行为(动画折叠......)和一些控件(Rectangle
,Ellipse
,主要用于设计目的)。
但是我需要它是一个有效的Panel
,如Grid
所以我可以在设计主窗口时添加更多控件。在主窗口设计时添加到新USerControl
的控件不需要与创建UserControl
时添加到其中的组件进行交互。
我该怎么做?我是否需要延长Control
?我宁愿只延伸UserControl
。
答案 0 :(得分:1)
UserControl
是ContentControl
,其Content
属性,通常根据ContentTemplate
显示。我要指出的是UserControl
里面有1个项目。当然,您可以将Children
属性添加到UserControl
,并处理将子项添加/删除到控件中的某个内部Grid
,但这不是内容控件的用途。
要托管多个项目,您应该使用Panel
的子类,如您提到的Grid
。所有面板都具有Children
属性,并在其上排列了元素列表。您可以继承Grid
并在那里放置一些行为。例如。您可以创建一个扩展属性MyGrid.Collapsed
,将其设置在网格中的元素上,这样它就可以排列它们的位置。
另一个选择是子类ItemsControl
。放入其中的元素将根据其ItemsPanel
模板显示。这种方法还为您提供了ItemsSource
属性的优势,可以使用ItemTemplate
属性通过生成元素来显示任意数据类型的列表。
答案 1 :(得分:0)
我所看到的是ContentPresenter
类与依赖属性的结合。
有关主题here或here的更多信息。或者尝试this google search。