我正在尝试构建一个ContentControl派生的控件(让我们称之为MyContentControl),它将ControlTemplate由一个DataTemplateSelector-derived类型的实例设置(让我们称之为MyTemplateSelector).
当我尝试这个:
ContentControl contentControl = new ContentControl();
contentControl.ContentTemplateSelector = new MyTemplateSelector();
contentControl.Content = "Some ContentControl Content";
MyContentControl myContentControl = new MyContentControl();
myContentControl.ContentTemplateSelector = new MyTemplateSelector();
myContentControl.Content = "Some MyControl Content";
Run Code Online (Sandbox Code Playgroud)
我希望,当我在这些控件上设置内容时,会同时调用方法MyTemplateSelector的覆盖和 .DataTemplateSelector.SelectTemplate()contentControlmyContentControl
实际上,只为contentControl调用它.我需要做什么(以及为什么!)才能使其发挥作用myContentControl?
(不确定它是否相关,但目前除了覆盖元数据信息之外MyContentControl没有做任何DependencyProperties其他事情DefaultStyleKeyProperty.
编辑(将内容从其他帖子转移到原始问题):
这是一个更详细的例子:
创建MyContentControl:
public class MyContentControl : ContentControl
{
static MyContentControl()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof (MyContentControl),
new FrameworkPropertyMetadata(typeof (MyContentControl)));
}
public MyContentControl() {}
} …Run Code Online (Sandbox Code Playgroud)