18

色のセットをリストするstyles.xamlファイルがあります。これらの色は、アプリケーションの一部内の特定の要素がどのように表示されるかを定義し、したがってコンバーターを介して使用されます。

アプリケーションの別の部分でこれらの色の凡例を作成し、背景色をstyles.xamlで定義された色に設定するトグルボタンリストを作成したいと思います。

トグルボタンを定義するxamlファイルにstyles.xamlファイルを含める必要がありますか?または、これらの色の値に直接バインドする方法はありますか?

4

2 に答える 2

34

styles.xamlをApp.xamlに追加します

 <Application.Resources>
    <ResourceDictionary >
        <ResourceDictionary.MergedDictionaries >       
            <ResourceDictionary Source="styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
于 2013-01-11T15:20:55.970 に答える
4

次のコンテンツ/回答の帰属は、@ChrisSchallerに送信する必要があります。この回答のコンテンツは、元々@ chameleon86回答への編集として投稿され、拒否されました(このメタも参照)。ただし、これは貴重なコンテンツであると思いますので、「再投稿」しています。

styles.xamlの定義をアプリ内のすべてのXAMLで利用できるようにするには、styles.xamlをApp.xamlに追加します

<Application.Resources>
   <ResourceDictionary >
        <ResourceDictionary.MergedDictionaries >  
            <ResourceDictionary Source="styles.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <!-- You can declare additional resources before or after Merged dictionaries, but not both -->
        <SolidColorBrush x:Key="DefaultBackgroundColorBrush" Color="Cornsilk" />
        <Style x:Key="DefaultBackgroundColor" TargetType="TextBox">
            <Setter Property="Background" Value="{StaticResource DefaultBackgroundColorBrush}" />
        </Style>
    </ResourceDictionary>
</Application.Resources>

これがどのように機能するかを理解するために、実行時に、ウィンドウ、ページ、またはコントロールは、実行中のアプリケーションビジュアルツリーの子要素として存在します。

最初の質問は次のとおりです。

「これらの色は、アプリケーションの一部に含まれる特定の要素を定義します...」

これらのスタイルリソースを一部のxamlページまたはウィンドウでのみ使用でき、すべてではない場合でも、このパターンを使用して、ウィンドウまたはグリッドやその他のコントロールのローカルリソースを直接マージできます。

  • これを行うと、これらのスタイルは、リソースディクショナリを宣言した要素の子要素でのみ使用可能になることに注意してください。

使用する単一のグリッドへのスタイル参照のスコープがいかに単純であるかを確認してください。

<Grid>
    <Grid.Resources>
        <ResourceDictionary >
            <ResourceDictionary.MergedDictionaries >       
                <ResourceDictionary Source="styles.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <!-- You can declare additional resources before or after Merged dictionaries, but not both -->
        </ResourceDictionary>
    </Grid.Resources>
    <!--
        Grid Content :)
      -->
</Grid>
于 2016-04-14T06:54:06.543 に答える