2011-08-30 29 views
1

我在写一个不寻常的控件,它使用通常的Generic.xaml来应用默认的控件模板。无法控制的ControlTemplate的代码隐藏?

此控件模板需要一些代码隐藏以呈现其本身(主要是为了响应调整大小事件),但我很困惑我应该把代码放在哪里,以及我如何从中访问模板。

此代码仅用于渲染此特定模板,因此不属于控件本身。

任何人都可以给我一个线索吗?

+0

你是什么意思的“渲染”本身做?您是否覆盖OnRender或者在调整大小时更改布局? – CodeNaked

+0

是的,如果这是一个用户控件,我会重写OnRender(),但是我不知道在通用字典中的样式应用了ControlTemplate时,该放置代码的位置。 – GazTheDestroyer

回答

2

这里有一个link可以帮助你

+0

感谢您的链接,但不幸的是它不能回答我的问题。 – GazTheDestroyer

1

您可以覆盖的OnRender方法在你的控制,就像在用户控件。尽管ControlTemplate中的元素会出现在控件所呈现的任何内容的顶部。

如果您需要在ControlTemplate中的元素上方或之间添加自定义渲染,那么您必须使用辅助元素作为命名部分。在blogmdm20's link(搜索“PART_”)中可以找到命名零件的示例。

然后,您可以根据从控件传递下来的设置,让该辅助元素执行渲染。

+0

非常感谢,但我无法重写我的控件的OnRender。正如我所说的,该代码对于控件使用的特定模板是必需的,而不是控件本身。 – GazTheDestroyer

+0

@Gaz - 是否有多个模板? “特定模板”和其他模板之间有什么不同? – CodeNaked

+0

会有不止一个是的。这个特定的模板只是另一个像其他所有控件一样的控件,但是这种特殊的外观只能在XAML中表达,并且需要隐藏代码。这是我不确定的背后代码的位置。 – GazTheDestroyer