UserControl也是WPF中的Grid

时间:2010-05-30 19:06:28

标签: c# wpf user-controls

我想创建一个UserControl,它会有一些行为(动画折叠......)和一些控件(RectangleEllipse,主要用于设计目的)。

但是我需要它是一个有效的Panel,如Grid所以我可以在设计主窗口时添加更多控件。在主窗口设计时添加到新USerControl的控件不需要与创建UserControl时添加到其中的组件进行交互。

我该怎么做?我是否需要延长Control?我宁愿只延伸UserControl

2 个答案:

答案 0 :(得分:1)

UserControlContentControl,其Content属性,通常根据ContentTemplate显示。我要指出的是UserControl里面有1个项目。当然,您可以将Children属性添加到UserControl,并处理将子项添加/删除到控件中的某个内部Grid,但这不是内容控件的用途。

要托管多个项目,您应该使用Panel的子类,如您提到的Grid。所有面板都具有Children属性,并在其上排列了元素列表。您可以继承Grid并在那里放置一些行为。例如。您可以创建一个扩展属性MyGrid.Collapsed,将其设置在网格中的元素上,这样它就可以排列它们的位置。

另一个选择是子类ItemsControl。放入其中的元素将根据其ItemsPanel模板显示。这种方法还为您提供了ItemsSource属性的优势,可以使用ItemTemplate属性通过生成元素来显示任意数据类型的列表。

答案 1 :(得分:0)

我所看到的是ContentPresenter类与依赖属性的结合。 有关主题herehere的更多信息。或者尝试this google search