0

ボタンを持つWPFユーザーコントロールがあります。リソースのデフォルト設定を確認するために、 System.Windows.Media.LinearGradientBrushbyの標準ボタン シェーディングを複製しました。Extract Value to Resource

次に、リソースをコピーしましたが、デフォルトの色を必要なものに置き換えました

    <LinearGradientBrush EndPoint="0,1">
        <GradientStop Color="#FFF3F3F3" Offset="0" />
        <GradientStop Color="#FFEBEBEB" Offset="0.5" />
        <GradientStop Color="#FFDDDDDD" Offset="0.5" />
        <GradientStop Color="#FFCDCDCD" Offset="1" />
    </LinearGradientBrush>

次に、リソースを削除したので、完全な XAML は次のようになります

<UserControl x:Class="Project.Detail"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             mc:Ignorable="d" 
             d:DesignHeight="30" d:DesignWidth="800" BorderBrush="#FF5380E7" BorderThickness="0,0,0,1" >
    <Grid Height="30" Width="800">
        <Button Height="30" HorizontalAlignment="Left" Margin="254,0,0,0" Name="bOption3" VerticalAlignment="Top" Width="50" Click="bOption_Click" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="10" FontStretch="SemiCondensed">
            <Button.Background>
                <LinearGradientBrush EndPoint="0,1">
                    <GradientStop Color="#FFD2DEF9" Offset="0" />
                    <GradientStop Color="#FFC5D4F7" Offset="0.5" />
                    <GradientStop Color="#FFAEC3F4" Offset="0.5" />
                    <GradientStop Color="#FF8FACF0" Offset="1" />
                </LinearGradientBrush>
            </Button.Background>
        </Button>
    </Grid>
</UserControl>

デザイナーでは、正しいグラデーションで設定した色が表示されますが、ビルドして実行すると、ボタンはデフォルトの灰色になります。

誰が私が間違っているのか教えてもらえますか?

編集:

独自の色が必要な初期状態の背景を除いて、デフォルトのボタン スタイルを保持したい。バックグラウンドに特定のリソースを追加しようとしました

<UserControl.Resources>
    <LinearGradientBrush x:Key="NewBackground" EndPoint="0,1">
        <GradientStop Color="#FFD2DEF9" Offset="0" />
        <GradientStop Color="#FFC5D4F7" Offset="0.5" />
        <GradientStop Color="#FFAEC3F4" Offset="0.5" />
        <GradientStop Color="#FF8FACF0" Offset="1" />
    </LinearGradientBrush>
</UserControl.Resources>

そして追加

<Button Height="30" HorizontalAlignment="Left" Margin="360,0,0,0"  Background="{StaticResource NewBackground}">

再びデザイナーで色が適用されているのを確認できますが、アプリを実行すると常にデフォルトの灰色になります。

デザインモードのボタン

ここに画像の説明を入力

アプリ内ボタン

ここに画像の説明を入力

今いくつか質問があります

  1. 完全な新しいスタイルを作成するのではなく、デフォルト ボタンのプロパティを 1 つだけ変更する簡単な方法はありますか?

  2. 完全なスタイルを再作成する必要がある場合、すべての既定のプロパティにアクセスして同じ外観にすることはできますか?

ありがとう

4

1 に答える 1

1
  1. はい、特定のプロパティについては可能ですが、状況によって異なります。たとえば、FontSize、FontFamily、FontSize、FontStretch などを変更したい場合は、それをオーバーライドするために WPF によって提供される添付プロパティがいくつかあります。

    <Grid TextElement.FontFamily=""/> また<Button TextElement.FontFamily=""/>

  2. Expression Blend に移動して、WPF コントロールのデフォルト テンプレートを抽出できます。そこからテンプレートをカスタマイズします。

詳細はこちら

于 2012-09-06T23:16:52.963 に答える