2

コントロールの状態に応じて、カスタム ボタン コントロール テンプレートの Foreground プロパティを変更/アニメーション化したいと考えています。

RC0 より前に、ContentPresenter の Foreground を設定し、x:Name を指定して、VisualStateManager トランジションで参照しました。

ContentPresenter は Control から継承されなくなったため、Foreground を持たなくなりました。通常、テンプレート化されたコントロールに適用される Style に Foreground を設定します。しかし、VisualStateManager 遷移/状態から参照することはできません。また、Foreground プロパティが設定された TextBlock でラップすることもできず、( edit: ) Border には Foreground プロパティがありません。

助けていただければ幸いです。

アップデート:

削除されたプロパティのいくつかの問題は Border で解決できますが、Foreground を含むフォント/テキストに関連する問題は解決できません。

それは不可能と思われるため、私の特定のケースでは、ContentPresenter を TextBlock に置き換えることができました。

4

4 に答える 4

2

この問題を扱っているJesse Liberty からの投稿があります。簡単に言えば、ボタン内のコンテンツに特定の前景色を強制することになり、その決定はコンテンツ自体に任せるべきであるため、できないという考えです。

とにかく、依存関係プロパティをハイジャックするという概念を見てみたいと思うかもしれません。これは、必要なものに同じタイプの別のプロパティを使用しています。それは良い習慣ではありませんが、確かに機能します。

于 2008-10-02T15:56:32.347 に答える
1

ボタンのコンテンツが複雑でない限り、ContentPresenter を TextBlock に置き換えることはうまく機能します。ボタンのコンテンツに画像とテキストブロックがある例があります。その場合、コンテンツは表示されません。ContentPresenter を ContentControl に置き換えると、Foreground プロパティが元に戻ります。

<ControlTemplate TargetType="{x:Type ButtonBase}">
    <ContentControl Content="{TemplateBinding Content}" Foreground="{Binding Foreground}" />
</ControlTemplate>
于 2009-08-05T10:19:39.463 に答える
0

ContentControlの周囲に境界線を配置し、VSMがその境界線制御で機能するようにします。

于 2008-10-01T22:26:49.887 に答える
0

この問題の解決策を思いつきました。これは、ここにある既存の応答に似ています。

テンプレートに挿入できるコンテンツ タイプをテキストに制限したい場合は、非常にうまく機能します。

http://storypodders.com:8081/bodhiSoftware/node/14

于 2009-08-25T18:30:24.883 に答える