7

私はWPFを使用するのが初めてで、適用しようとしていましたStyle(たとえばTextBox、背景はオレンジ色である必要があります) ButtonMenuItemこれを達成するために、私は次のようなことをしました:

<Style TargetType="TextBox" x:Key="sampleTextBox">
    <Setter Property="Margin" Value="2"/>
    <Setter Property="FontFamily" Value="Verdana"/>
    <Setter Property="FontSize" Value="11px"/>
    <Setter Property="FontWeight" Value="Bold"/>
    <Setter Property="Background">
        <Setter.Value>
            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
                <GradientStop Color="#FFFFD190" Offset="0.2"/>
                <GradientStop Color="Orange" Offset="0.85"/>
                <GradientStop Color="#FFFFD190" Offset="1"/>
            </LinearGradientBrush>
        </Setter.Value>
    </Setter>
</Style>

targettypeButtonと target menu に対して同じコードを繰り返しました。これはまったく問題なく動作しています。しかし、おそらく複数の targettype 値を持つことで、繰り返されるコードの量を最小限に抑えたいと考えています。

可能な場合はお知らせください。

ありがとう。

4

3 に答える 3

9
  <Window.Resources>
    <Style x:Key="sampleTextBox">
        <Setter Property="Control.FontFamily" Value="Verdana"/>
        <Setter Property="Control.FontSize" Value="11px"/>
        <Setter Property="Control.FontWeight" Value="Bold"/>
        <Setter Property="Control.Background">
            <Setter.Value>
                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1" >
                    <GradientStop Color="#FFFFD190" Offset="0.2"/>
                    <GradientStop Color="Orange" Offset="0.85"/>
                    <GradientStop Color="#FFFFD190" Offset="1"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>

<StackPanel>
    <TextBlock Text="This is a string and it should be wrapped." Style="{StaticResource sampleTextBox}"/>
    <TextBox Text="This is a string and it should be wrapped." Style="{StaticResource sampleTextBox}"/>
</StackPanel>
于 2013-08-12T09:13:37.847 に答える
3

Style には属性BasedOnがあります。http://msdn.microsoft.com/en-us/library/system.windows.style.basedon.aspxこれにより、スタイルの継承を使用できます。共通の属性を持つ基本スタイルを定義し、特定の属性を持つ子スタイルを派生させます。

于 2013-08-12T09:13:33.077 に答える