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

时间:2009-06-04 11:48:42

标签: wpf xaml user-controls datagrid

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:1)

我会使用自定义UserControl路由而不是继承路由。当您处理子类时,样式和主题工作奇怪。除非您计划复制和修改Telerik的ControlTemplates和DataTemplates,否则它会非常繁琐。

答案 1 :(得分:1)

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

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

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