我们可以制作WPF自定义控件来覆盖某些控件的外观和感觉,就像图标按钮一样。
public class MyButton : Button {
static MyButton()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyButton), new FrameworkPropertyMetadata(typeof(MyButton)));
}
...
}
但我认为这种方式存在一些问题。当我分发Custom Cotrol'MyButton'时,它会引起一些问题。因为MyButton依赖于外部资源,所以WPF Style MyButton。所以我需要分发两个文件:MyButton.cs和MyButton.WPF。
那么,我如何通过编程方式确定Conotrol模板?
(原因是,解决问题的另一种方法是制作WPF用户控件。但我的观点不是那样。)
注意:我找到了一些有关此问题的资源。这是一个内联XAML脚本。但对我来说,XAML脚本不是选项。因为我正在学习WPF所以我想知道自己的WPF,而不是技巧。
答案 0 :(得分:2)
您不分发代码,分发包含该类的dll和generic.xaml
这样,另一位设计师/开发人员可以“覆盖”该模板,并将您的模板作为安全后备保留。
修改强>
在代码中定义模板并不好玩(很多代码,难以调试,难以维护)但是可以做到:
var template = new ControlTemplate(typeof(MyControl));
<强> EDIT2 强>
另一个黑客是在长字符串中指定模板并使用XAML Parser加载它。