0

ファイル app.xaml

<Application.Resources>
    <ResourceDictionary>
        <SolidColorBrush x:Key="appBrush" Color="Red"/>

        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary  Source="Dictionary1.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

ファイル Dictionary1.xaml

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ControlTemplate x:Key="ct">
        <Rectangle Fill="{StaticResource appBrush }"/>
    </ControlTemplate>
</ResourceDictionary>

次に、MainWindow は定義されたテンプレートを使用します。

<Control Template="{StaticResource ct}"/>

走る。appBrush が見つからないと表示されます。どうしたの?

StaticResource を DynamicResource に変更すると、確実に機能することに注意してください。しかし、私に変更を強いる理由は何ですか?

4

1 に答える 1

0

App.xaml をこれに変更すると、機能します。

<Application.Resources>
  <ResourceDictionary>
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary>
           <SolidColorBrush x:Key="appBrush" Color="Red"/>
        </ResourceDictionary>
        <ResourceDictionary  Source="Dictionary1.xaml"/>
    </ResourceDictionary.MergedDictionaries>
  </ResourceDictionary>
</Application.Resources>

リソースがどのようにマージされるかに関係していると思います。このような状況では、常に Brushes.xaml リソース ディクショナリを使用してすべてのブラシを定義し、それを他のリソース ディクショナリの前にマージします。

于 2012-07-31T04:18:22.160 に答える