12

Web 開発では、スタイル シートが非常に一般的に使用されます。Swing には、GUI を処理するためのレイアウト マネージャーがあります。XAML がこれらのパラダイムの 1 つを適用するという仮定は正しいですか? 両方?このような場合、どちらが優先されますか?

Intellisense をチェックしましたが、フィールドを除いて、Style特に明らかなものは何も見つかりませんでした。また、どのキーワードを検索すればよいかわかりません。提案?

4

2 に答える 2

12

探しているのは ResourceDictionary です。これは、App.Resources 要素にスタイルを配置するよりもはるかに柔軟で、スタイルの範囲をより細かく制御できます。

スタイルを App.Resources に配置すると、いくつかの欠点があります。

  • それはすぐにいっぱいになり、巨大で肥大化したリストに変わる可能性があります
  • そこにあるすべてのスタイルは、世界中で利用できます。あなたはそれを望まないかもしれません。

ResourceDictionary を使用すると、これが大幅に修正されます。

  • スタイルを 1 つ以上のアセンブリに保持し、アプリケーション間で再利用できます
  • resourcedictionaries を含める (または含めない) ことで、ページに追加するスタイルを制御できます。
  • スタイルとテンプレートを自分にとって論理的な方法でグループ化および整理できます

リソース ディクショナリは、CSS ファイルに非常によく似ています。基本的に、これらを使用してさまざまなものを保存します。

  • スタイル
  • ControlTemplates と DataTemplates
  • ブラシ等

また、スタイルシートと同様に、コントロール タイプ全体または名前付きスタイルを使用するコントロールに適用できます。

<UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Styles/DialogStyles.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Error.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Exit.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/Project.Ui;component/Icons/Warning.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
</UserControl.Resources>

ResourceDictionary の定義:

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:po="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
                        xmlns:sys="clr-namespace:System;assembly=mscorlib"
                        xmlns:Infrastructure="clr-namespace:Hsbc.Ice.Shell.Infrastructure"
                        xmlns:Ui="clr-namespace:Hsbc.Ice.Shell.Infrastructure.Ui">

        <LinearGradientBrush x:Key="{x:Static Ui:Brushes.SelectedRowBackgroundBrushKey}" StartPoint="0.5,0" EndPoint="0.5,1" 
                                 po:Freeze="True">
            <GradientStop Color="#4D5F6E96" Offset="0"/>
            <GradientStop Color="#2191A0BE" Offset="0.2"/>
            <GradientStop Color="#2191A0BE" Offset="0.45"/>
            <GradientStop Color="#745F6E96" Offset="1"/>
        </LinearGradientBrush>
    </ResourceDictionary>
于 2012-11-08T11:01:19.210 に答える
11

スタイルをリソースとしてアセンブリに保存し、cssとして複数のファイルで利用できるようにするためのより良い方法

確認できます:Silverlightとスタイル

また、Application.Resourcesを介してSilverlightコントロールスタイルを設定する方法も確認してください。

このようなスタイルをApplication.Xamlファイルに入れるか、新しいスタイルを作成します

<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
             x:Class="AppResStyle.App"
             >
    <Application.Resources>
        <Style x:Key="ButtonStyle" TargetType="Button">
            <Setter Property="BorderBrush" Value="Green" />
            <Setter Property="Foreground" Value="Blue" />
     </Style>
    </Application.Resources>
</Application>

これで、このように複数のuercontrolで使用して、ボタンにスタイルを割り当てることができます。

<UserControl x:Class="AppResStyle.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="130" Height="80">
    <Grid x:Name="LayoutRoot" Background="White">
        <Button Content="Button1" Height="75" Width="125" Style="{StaticResource ButtonStyle}" />
    </Grid>
</UserControl>
于 2012-11-08T08:22:38.413 に答える