封装和自定义第三方WPF控件

问题描述:

我有兴趣定制第三方控件(如Telerik的RadGridView)作为独立控件,例如在网格上方添加New Row和Delete Row按钮,但仍支持XAML操作的内部控件的内部控件存在于我的控件所在的窗口(即窗口将其自己的样式添加到网格列中)。封装和自定义第三方WPF控件

有没有办法添加按钮等与模板?样式?

我目前的“解决方案”是从RadGridView继承,但我坚持如何添加我需要的功能。

谢谢!

我的建议是使用合成而不是继承。

您可以创建自己的控件(UserControl应该做的工作)。然后,您可以定义布局(可能在Grid面板中):顶部的按钮,RadGridView在它们的下面等等。对于自定义列样式,您可以使用DynamicResource技巧。使用DynamicResource设置要修改的列的样式。这种方式将控制添加到逻辑(可视)树时; WPF将遍历控制树并找到合适的资源。这样在每个窗口/页面资源中可以定义不同的资源。

我想到的另一个想法是,你可以提取按钮作为一个单独的控制。他们将需要的唯一参考将是RadGridView并且您可以使用与元素名称绑定来提供它。

我会去自定义UserControl路线而不是继承路线。当你处理w /子类时,造型和主题奇怪地工作。除非您计划复制和修改Telerik的ControlTemplates和DataTemplates,否则它会变得非常多。