2011-08-30 13 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

相關問題