1

ほとんどの基本的なコントロール(テキストボックスなど)に対して要素型のスタイルが定義されているWPFアプリケーションを扱っています。私は今、コントロールにコントロールを持っています...基本的にテキストボックスのプロパティを直接変更する方法がないので、このプロパティがすべての子に伝播することを期待して、コントロールにプロパティ(fontsize)を設定しますコントロールの。残念ながら、要素型のスタイルは、私のコントロール プロパティよりも優先されます。

これらの要素型のスタイルをオーバーライドする方法はありますか?

4

2 に答える 2

1

私がよく理解していれば、FontSizefor aTextBoxをa に設定しStyleます (例: FontSize=15)。Textbox の子をいくつか含むコントロールもあります。

を設定するControl FontSize=10と、TextBox の子の FontSize は 15 になりますが、10 であると予想されます。

これはあなたの問題ですか?はいの場合、次のようになります。

FontSize は依存関係プロパティです。そのため、その値は、次の優先度の高いものから低いものの順にリストされている多くの異なるプロバイダー (依存関係プロパティ設定の優先順位リスト msdnから取得した簡略化されたリスト) によって指定できます。

  1. プロパティ システムの強制。
  2. アクティブなアニメーション、またはホールド動作のあるアニメーション。
  3. ローカル値。
  4. TemplatedParent テンプレート プロパティ。
  5. 暗黙のスタイル。Style プロパティにのみ適用されます。
  6. スタイルトリガー。
  7. テンプレート トリガー。
  8. スタイル セッター。
  9. デフォルト (テーマ) スタイル。デフォルトのスタイル内では、次の優先順位が適用されます。
  10. 継承。
  11. 依存関係プロパティ メタデータの既定値。

特定のケースでは、 TextBox FontSize は次のソースに従って設定されます。

  • FontSize=15スタイルから (優先度 8)
  • FontSize=10Control FontSize から (優先度 10)

優先度が高いため、FontSize の値が優先されます。

結論として、設定の優先順位リストに従って優先度の高いプロバイダーを使用することで、Style によって指定された FontSize をオーバーライドできます。

これが役立つことを願っています

于 2013-01-03T15:09:19.240 に答える
0

要素固有のプロパティはどのように設定されていますか? たとえば、TextBox の場合は FontSize = 10 で、コンボボックスの場合は 11 ですか? それとも、すべての要素で標準サイズの 10 ですか? もしそうなら、要素スタイルが同じであるのに、なぜ同じ値を設定したのですか?

要素間で異なる場合、コントロール固有のフォントサイズを設定するときに何を期待しますか? 要素固有のフォントサイズをオーバーライドする必要がありますか? もしそうなら、なぜ最初に要素固有の fontside を設定したのですか? コントロール (またはアプリ) は、ビジュアル ツリー内の最小要素にカスケードするフォント サイズを定義する必要があります (どこでも同じフォントが予想される場合)。そのような場合、要素固有のフォントサイズを取り除くことをお勧めします。

于 2013-01-03T15:00:33.537 に答える