My global(App.xaml
)ControlTemplate Button
は、Foreground
プロパティをデフォルトの黒色からオーバーライドしたくありません。これは比較的一般的な問題だと思われますが、私はBasedOn
をnull
に設定して、described in this questionとするなどさまざまな解決策を試しました。WPF Button ControlTemplateは継承されません。
私のコードは以下の通りです。Grid
とContentPresenter
の両方にフォアグラウンドカラーを明示的に指定しようとしました。しかし、色は黒のままです。スヌープはデフォルトから継承していると伝えていますが、どこから言われていないようですが、TextElement.Foreground
が正しい色に設定されているとしてContentPresenter
という親を示しています。
このコードには設定する必要がありますか?私は要素や不動産を見逃したのですか?
<Style TargetType="Button">
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid x:Name="grid" TextBlock.Foreground="#FFD3D3D2">
<Border x:Name="border" Background="Transparent" BorderBrush="#FF5C7999" BorderThickness="2" CornerRadius="{Binding RelativeSource={RelativeSource TemplatedParent},Path=ActualHeight,Converter={StaticResource HalfConverter}}" Padding="10">
<ContentPresenter Content="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="10,0" TextBlock.Foreground="#FFD3D3D2">
</ContentPresenter>
</Border>
</Grid>
...
あなたが持っているものに基づいて問題を再現することはできません。ボタンはどのコンテキストに表示されますか?あなたは 'Content'に何を使っていますか? –
実際、私はそれを再現できます: ''は私に灰色の "Foo"を与えます。 ''私は黒い「Foo」を取得します。 –
'Label'コンテンツに適用される' ControlTemplate.Resources'に 'Label'の暗黙の' Style'を置くことができます。 –