2010-03-22 31 views
2

如果您創建一個簡單的按鈕,然後選擇編輯模板 - >編輯一個副本,Blend會自動生成一個樣式區域以及所有按鈕狀態(MouseEnter,MouseLeave,Pressed等)。在生成的代碼中沒有任何地方會說,在「MouseOver」事件中,將狀態更改爲「MouseOver」,但它仍然可以工作!在Silverlight中自動更改VisualState

標準按鈕是如何做到的?是否有某種AutoEventWireUp正在進行?

+0

我不太確定我理解你的問題。你真的想要以這種方式改變一個按鈕的狀態嗎? – AnthonyWJones 2010-03-22 21:39:18

回答

4

控件本身定義了它們所尊重的狀態。不幸的是,沒有神奇的自動佈線正在進行。該按鈕包含確定鼠標何時結束的代碼,並且在這種情況下,將其視覺狀態設置爲MouseOver。 TemplateVisualStateAttribute讓Blend知道在這個控件上有一個確定的有效狀態,但是控件本身的代碼實際上決定了它的狀態。

如果你正在開發自己的控件,將負責定義您的控件支持您的哪些狀態,以及正確確定您處於哪種狀態的工作。

僅供參考:大多數內置控件都在MSDN文檔中列出了其支持的狀態。例如,Button for Silverlight 3 is here