簡體   English   中英

如何在WPF中動態更改ControlTemplate

[英]How to dynamically change a ControlTemplate in WPF

我正在嘗試創建一個自Button繼承的自定義控件。 在ControlTemplate中,我想將MyCustomButton顯示為圓形,正方形或其他任何形狀。

我有一個DependencyProperty-ButtonShape-這是一個枚舉類型,指示按鈕形狀的類型。 當用戶更改ButtonShape時,必須更改按鈕的外觀。

我知道如何為自定義按鈕創建ControlTemplate,以使其看起來像圓形,正方形或橢圓形或任何其他形狀,但是我不知道該如何處理變化的部分。

也許我應該創建其他ControlTemplates,並在OnButtenShapeChanged事件中設置適當的模板,但是我認為這不是正確的方法。

任何想法,將不勝感激。 謝謝。

我相信最簡單的方法是ControlTemplate定義觸發器 您需要在(單個) ControlTemplate定義三個形狀,並根據ButtonShape屬性的狀態顯示/隱藏所需的形狀。

我將覆蓋ControlTemplate屬性元數據並添加Coerce回調。 然后,在Coerce階段,返回要使用的當前ControlTemplate(基於屬性)。

在ButtonShape屬性值更改的回調上,您需要調用CoerceValue()來更新ControlTemplate。

這將使用戶無法設置自己的控制模板,但是聽起來這可能不是問題。

這是有關依賴屬性強制的一些基礎知識: http : //msdn.microsoft.com/zh-cn/library/ms745795( v=vs.110) .aspx#Coerce_Value_Callbacks_and_Property_Changed_Events

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM