どこでも検索しましたが、これに対する説明や解決策が見つからないので、誰かが私の問題に光を当ててくれることを願っています。
問題を説明するために、TextBlock から継承する Label というクラスを作成しました。デフォルトのフォアグラウンド ブラシ、フォント ウェイト、フォント サイズ、およびフォント ファミリーをオーバーライドしたいと考えています。すべてのオーバーライドはフォアグラウンドとは別に機能します (背景を問題なくオーバーライドできるため、フォアグラウンド プロパティに固有のものです)。
新しい WPF アプリケーションを作成し、次の単純なクラスを作成します。
namespace WpfApplication
{
public class Label : TextBlock
{
static Label()
{
ForegroundProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(Brushes.Red));
FontWeightProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(FontWeights.Bold));
FontSizeProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(50.0));
FontFamilyProperty.OverrideMetadata(typeof(Label), new FrameworkPropertyMetadata(new FontFamily("Calibri")));
}
}
}
MainWindow.xaml で、この新しい Label クラスのインスタンスを作成します。
<Grid>
<local:Label Text="TEST" />
</Grid>
ラベルが新しいフォアグラウンドのデフォルトを採用していないことがわかりますが、SNOOP を見ると、まだその値を継承しています。
私が知る限り、どの依存関係プロパティもオーバーライドできるので、どんな助けも大歓迎です!