3

ToggleButton押されたボタンのデフォルトの外観ではなく、チェックされたときに(たとえば)赤い前景で表示される を定義したいと思います。

ToggleButton表示状態は、 内の名前付き要素として維持されていることがわかりますControlTemplate

テンプレート全体を再定義せずに、表示状態を置換/削除/カスタマイズする最も簡単な方法は何ですか?

4

2 に答える 2

1

これは非常に遅いと思いますが、同じ問題に遭遇し、自分で解決策を見つけたので、これが誰かに役立つことを願っています。

テンプレートがコントロールに適用された後(最初の測定/表示サイクルの後)、を使用するだけで、インスタンス化されたテンプレートとその子コンポーネントにアクセスできます。VisualTreeHelper.GetChild (myToggleButton, 0)これにより、インスタンス化されたテンプレートのビジュアルツリーのルートオブジェクトが返され、そこから次のことができます。 Childrenコレクションの子オブジェクトを追加/削除/変更します。

明らかに、テンプレートリソース自体ではなく、コントロールのそのインスタンスの視覚的な状態を変更するだけなので、同じテンプレートから作成された新しいコントロールは、元の視覚的な外観のままになります。

このテーマに関する私の本当の質問はここにあります:Silverlight 3で、実行時にControlTemplateパーツを置き換えるにはどうすればよいですか?

于 2010-01-11T10:47:05.403 に答える
-1

独自のものを作成しControlTemplateてパラメーターを標準に設定し、BasedOn必要なものだけを変更してみましたか?

于 2009-11-13T22:50:16.847 に答える