ToggleButton
押されたボタンのデフォルトの外観ではなく、チェックされたときに(たとえば)赤い前景で表示される を定義したいと思います。
ToggleButton
表示状態は、 内の名前付き要素として維持されていることがわかりますControlTemplate
。
テンプレート全体を再定義せずに、表示状態を置換/削除/カスタマイズする最も簡単な方法は何ですか?
ToggleButton
押されたボタンのデフォルトの外観ではなく、チェックされたときに(たとえば)赤い前景で表示される を定義したいと思います。
ToggleButton
表示状態は、 内の名前付き要素として維持されていることがわかりますControlTemplate
。
テンプレート全体を再定義せずに、表示状態を置換/削除/カスタマイズする最も簡単な方法は何ですか?
これは非常に遅いと思いますが、同じ問題に遭遇し、自分で解決策を見つけたので、これが誰かに役立つことを願っています。
テンプレートがコントロールに適用された後(最初の測定/表示サイクルの後)、を使用するだけで、インスタンス化されたテンプレートとその子コンポーネントにアクセスできます。VisualTreeHelper.GetChild (myToggleButton, 0)
これにより、インスタンス化されたテンプレートのビジュアルツリーのルートオブジェクトが返され、そこから次のことができます。 Childrenコレクションの子オブジェクトを追加/削除/変更します。
明らかに、テンプレートリソース自体ではなく、コントロールのそのインスタンスの視覚的な状態を変更するだけなので、同じテンプレートから作成された新しいコントロールは、元の視覚的な外観のままになります。
このテーマに関する私の本当の質問はここにあります:Silverlight 3で、実行時にControlTemplateパーツを置き換えるにはどうすればよいですか?
独自のものを作成しControlTemplate
てパラメーターを標準に設定し、BasedOn
必要なものだけを変更してみましたか?