4

Expression Blend では、たとえば 18 の font-size を作成してから、「font-size リソース」を作成できます。

これを HTML/CSS から考えてみると、「font-size」のスタイルと「font-style」のスタイル、「font-weight」のスタイルをいつ作成したいかわかりません。代わりに、「CompanyHeader」というフォントを作成し、フォントの太さ、フォント スタイル、フォント サイズ、色など、10 個の異なる属性を設定したいと考えています。

Expression Blend、XAML でこれが異なるのはなぜですか、属性ごとにスタイル/リソースを作成する意味は何ですか?

この図は、各属性の小さなボタンをクリックしてリソースに変更する方法を示しています: 代替テキスト http://tanguay.info/web/external/blendStyles.png

4

5 に答える 5

10

Blend の経験はありませんが、XAML のスタイルには複数の属性を含めることができます。css とは異なり、1 つの要素に 1 つのスタイルしか適用できず、複数の 1 つの属性スタイルを組み合わせることができないためです。

複数のプロパティを設定するスタイルの例を次に示します。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
   <Page.Resources>
      <Style x:Key="MyStyle" TargetType="{x:Type Label}">
         <Setter Property="Width" Value="125"/>
         <Setter Property="Height" Value="25"/>
         <Setter Property="Background" Value="Red"/>
      </Style>
   </Page.Resources>
   <Label Style="{StaticResource MyStyle}"/>
</Page>

スタイルをそれぞれ 1 つのプロパティを設定する 3 つの小さなスタイルに分割したい場合、Label の Style プロパティは 1 つのスタイルしか受け入れられないため、それらを使用できないことに注意してください。

于 2009-02-08T11:58:15.820 に答える
1

フォントの各インスタンスは独自のリソースを使用します。複数のそのような定義が同じフォントを参照するかどうかは問題ではありません。

2 つの異なるスタイルで同じフォントを使用すると、フォントのインスタンスが 2 つになります (スタイルが適用される場合)。代わりに、フォントを独自のスタイルとして定義し、そのスタイルを他のスタイル内で使用できます。この場合、フォント リソースの実行時インスタンスが両方のスタイルで使用されます。

非常に複雑なリソース ディクショナリがある場合 (たとえば、テーマを作成している場合)、個別のリソース (または名前付きスタイル) として (特定のカラー ブラシやフォントなどの) 汎用アセットを定義し、それらを他の複雑なリソースで使用することをお勧めします。システム リソースを節約するためのスタイル。

Blend に関するご質問については、このベスト プラクティスを簡単に適用できます。

于 2010-06-03T02:44:09.917 に答える
0

これは、スタイルを使用およびラップするためのヘルパークラスを作成することで可能になります。ここで説明するCompoundStyleは、その方法を示しています。複数の方法がありますが、最も簡単な方法は次のことです。

<TextBlock Text="Test"
    local:CompoundStyle.StyleKeys="headerStyle,textForMessageStyle,centeredStyle"/>

ブログ投稿ではWin8とWindowsPhoneについて説明していますが、同じコードがWPFでも機能します(不要なUtiliesクラスを除く)

お役に立てば幸いです。

于 2012-10-04T15:27:52.800 に答える