2010-08-10 28 views
1

我正在尋找一種簡單的方法來在我的Silverlight應用程序(顯然繼承自ButtonBase)的每個控件上設置ClickMode =「Pressed」。在Silverlight中爲所有按鈕式控件設置ClickMode

該解決方案還應該訪問任何ButtonBase-Control,它是控件模板的一部分,例如SilverlightToolkit的ComboBox。

我必須爲此創建自定義主題嗎?如果是的話,我如何重用現有的主題,並重寫此屬性?

在此先感謝。

回答

0

你其實回答了你自己的問題。是的,您可以使用現有的樣式來確保ClickMode屬性在應用程序的每個ButtonBase控件中設置。這是一種可以讓你走的風格。這是一個未命名的樣式,它將確保從ButtonBase擴展的任何控件都將繼承此樣式。

<Style TargetType="ButtonBase"> 
     <Setter Property="ClickMode" Value="Pressed"/> 
</Style> 

我希望這會有所幫助。

+0

感謝您的回答。你把這個放在哪裏?我之前在標記中嘗試過,並沒有奏效。順便說一句:我只是注意到模式實際上被稱爲「按」 – Chris 2010-08-10 13:07:13

+0

你可以把它放在標記,但如果你想風格適用於應用程序中的所有控件(不只是一個特定的用戶控件),然後使用資源字典並在App.xaml文件中引用它 這篇文章應該闡明你對silverlight中的樣式有任何疑問。 http://www.silverlightshow.net/items/Merged-Resource-Dictionaries-in-Silverlight-3.aspx – dparker 2010-08-10 13:21:23

+0

我現在已經使用了一個外部資源字典,它在應用程序啓動時被加載,但TargetType = ButtonBase似乎不起作用。當我有一個TargetType = Button的樣式時,它很有用,很奇怪。 也許ClickMode被buttonbase的每個子類的默認樣式覆蓋? – Chris 2010-08-10 13:59:20

1

http://msdn.microsoft.com/en-us/library/system.windows.style%28v=VS.95%29.aspx下隱式風格:

在Silverlight 4中,您可以隱式設置樣式。也就是說,您可以將特定樣式應用於某種類型的所有元素。當聲明不帶x:Key值的資源時,x:Key值將假定TargetType屬性的值。如果隱式設置樣式,則樣式僅應用於與TargetType完全匹配的類型,而不應用於從TargetType值派生的元素。例如,如果您爲應用程序中的所有ToggleButton控件隱式創建樣式,並且您的應用程序具有ToggleButton和CheckBox控件(CheckBox從ToggleButton派生),則該樣式僅應用於ToggleButton控件。

因此,似乎沒有辦法爲ButtonBase及其子類創建樣式。

相關問題