ResourceDictionaryから他のResourceDictionaryのリソースを使うとき

もくじ
https://tera1707.com/entry/2022/02/06/144447#WinUI3

やりたいこと

知ってる人ならあたりまえやんといわれそうだが、
あるリソースディクショナリから、別のリソースディクショナリにあるブラシを使おうとしたときに、 リソースが見つかりませんと言われて実行時にエラーになってしまった。

具体的には、以前作ったようなテーマごとのリソースを、別のリソースディクショナリから見ようとして見れなかった。(実行時に下記のようなエラーになった。)

地味にハマったのでメモする。

対策

リソースディクショナリの中で、MergedDictionariesする。
具体的には、下記のようにする。

使う側のリソースディクショナリ

<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App8.Resources">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Resources\ThemeResourceDictionary.xaml"/> ★★コレ★★
    </ResourceDictionary.MergedDictionaries>

    <Style TargetType="Button">
        <Setter Property="Background" Value="{ThemeResource MyBrush}" />
    ・
    ・
    ・

ThemeResourceDictionary.xamlの中にあるMyBrushというブラシのリソースを、このリソースディクショナリ内で使うよ、ということ。