2011-12-15 10 views
4

暗黙のスタイルとして定義されたデフォルトのコントロールスタイルを持つアプリケーションがあります。暗黙のスタイルをコードの後ろに設定する

XAML:

<Style TargetType="Button"> 
    [...] 
</Style> 

これらのスタイルはこれで、アプリケーション内のすべてのボタンに適用されます。

時々、私たちは別の何かにコードビハインドでスタイルを変更します。

XAML:

<Style x:Key="HighlightStyle" TargetType="Button"> 
    [...] 
</Style> 

コード:

cmdButton.Style = App.Current.Resources("HighlightStyle") 

は、その後、再び私たちはスタイルを削除し、暗黙的なスタイルに戻りたいが、これは可能ではないようです。

コード:

cmdButton.Style = Nothing 

結果は、unstyled Buttonになります。

私はまた、すべての暗黙的なスタイルは、キーとしてTargetTypeに-値でアクセスする必要がありますが、これはどちらか動作するようには思えないことをここにhttp://www.silverlightshow.net/items/Implicit-Styles-in-Silverlight-4.aspxを読みました。

これを回避する方法を知っている人はいますか?

答えて

5

はいつものように、とすぐに私は質問を投稿したとして、私は解決策を作ってみた:

オブジェクトは、デフォルトのスタイルでそれを残してスタイルプロパティをクリアにClearValueメソッドを使用しました。

cmdButton.ClearValue(FrameworkElement.StyleProperty) 
0

何について - cmdButton.Style = Nothing;の代わりにをデフォルトのStyleに追加すると、cmdButton.Style = App.Current.Resources("DefaultButtonStyle");となります。

この解決策が嫌いなら、VisualStateManagerに関する記事を読むことができます。しかし、それを実装するには、あなたのロジックを少し書き直す必要があります。

+0

はい、これは当然のことが可能であろうが、それはスタイルが長く暗黙的ではないため、自動的にアプリケーション内のすべてのボタンに設定されていないということを意味します。 – Webfarmer

関連する問題