WPF:自定义控件中的多个内容演示者?
我正在尝试使用自定义控件,该控件需要由子控件定义2个或更多XAML区域 – 从该控件inheritance。 我想知道是否有一种方法可以定义多个内容提供者和一个充当默认内容呈现者的方法
这是可能的,我如何在自定义控件的模板中定义它?
模板可以像这样绑定单独的ContentPresenter
实例(我在这里只设置了一个属性,但你可能想要设置其他属性):
控件本身应该公开内容的两个属性,并使用ContentPropertyAttribute
设置默认值:
[ContentProperty("Content1")] public class MyControl : Control { // dependency properties for Content1 and Content2 // you might also want Content1Template, Content2Template, Content1TemplateSelector, Content2TemplateSelector }
您可以将“ItemsControl”与自定义模板一起使用。
这是另一个不需要制作自定义控件的选项,比使用ItemsControl更安全(如果类型安全是你想要的东西……也许不是):
…使用附属物!
创建适当类型的附加属性。 我们碰巧需要一个文本控件,所以我做了一个字符串TextContent附加属性。 然后从模板创建一个TemplateBinding,当在Xaml中实例化时也将它设置在那里。 很好地工作。