3

アプリケーションスタイルをいくつかのxamlファイルに分ける必要があります。しかし、私はまた、次のようないくつかの共有値を定義する必要があります

<x:Double x:Key="SharedValue">100</x:Double>

他のファイルで定義されたスタイルでこの値を使用するための単一ファイル。例えば:

<Style x:Name="SomeStyle" TargetType="TextBox">
     <Setter Property="Width" Value="{StaticResource SharedValue}"/>
</Style>

および別のリソース辞書ファイル:

<Style x:Name="AnotherStyle" TargetType="Button">
     <Setter Property="Height" Value="{StaticResource SharedValue}"/>
</Style>

しかし、App.xamlファイルでマージされたリソースディクショナリを定義しようとすると

<Application.Resources>
    <ResourceDictionary >
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="DefinedValues.xaml"/>
            <ResourceDictionary Source="Styles1.xaml"/>
            <ResourceDictionary Source="Styles2.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

このランタイム例外が発生します:"メッセージ="名前/キーSharedValueを持つリソースが見つかりません "

これを行うことは可能であり、私が間違っていることを教えてもらえますか?ありがとう。

4

1 に答える 1

9

他のマージされたディクショナリ間に依存関係がある場合、マージされたディクショナリの使用は少し注意が必要です。

複数のアプリケーションスコープリソースがある場合、宣言の順序が重要です。それらは宣言の逆の順序で解決されるので、あなたの場合は順序が必要です。

<Application.Resources>
<ResourceDictionary >
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Styles1.xaml"/>
        <ResourceDictionary Source="Styles2.xaml"/>
        <ResourceDictionary Source="DefinedValues.xaml"/>

    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

また、Styles1.xamlで他のResourceDictionaryを参照する必要がある場合もあります。これは、Styles1.xamlで機能しました。

<ResourceDictionary "...">

  <ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="SharedValues.xaml" />
  </ResourceDictionary.MergedDictionaries>

  <Style x:Name="AnotherStyle"
         TargetType="Button">
    <Setter Property="Height"
            Value="{StaticResource SharedValue}" />
  </Style>
</ResourceDictionary>
于 2012-10-23T04:33:28.213 に答える