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というブラシのリソースを、このリソースディクショナリ内で使うよ、ということ。

参考書

WinUI3

WinUI3でアプリを作ろうと思ったときのとっかかりによかった。 msdocsに書いてある情報を、体系的に、順番に読みたいな、というときによいかも。(ただし英語)
この本で分からなかった、かゆいところに手が届かなかった部分を私は記事にしてる感じ。

C#①

表紙に書いてある通り、教科書として最適。 これからC#を勉強したいけど、ネットだけで勉強するのは効率が悪いから体系的に学べる本が欲しいときや、 ちょっとC#を勉強してコード書けるようになったけど、もう少し広く深く知りたいなというときによいと思う。
私は仕事で触れるコードを軸に、基本ネットで断片的にC#を学んだので、その知識の隙間を埋めて枝葉を広げるためにとても分かりやすかった。

C#②

C#の文法的に色々できるのは分かったが、いざ実装するときに、わかったことを使ってどう実装すればいいのか?と悩んだときに指針になりそうな本。
「プロパティ等の名前の付け方、どうすればいい?」「情報をクラス外部に見せるときに、プロパティにすべき?メソッドにすべき?」「異常だと判定したいとき、どんなときにどんな例外をスローすべき?」などなど、勉強になる部分が山ほどあった。
私のように「コードは書くけどこれであってるのか自信がない、レビューで指摘されるのが嫌だ、実装時の(心の)よりどころが欲しい」という人に最適。