ResourceDictionaryの中のリソースを、コードから使いたい

WInUI3関連記事

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

やりたいこと

ResourceDictionaryの中に書いた、もしくは中で使っているリソースを、コードから使いたい。 まずは、ResourceDictionaryの中で使っているColorをコードでも使いたい。

前提

  • VisualStudio2022 Community 17.1.4
  • WinUI3
  • Windows App SDK 1.0

やり方

Application.Current.Resources を使う。

サンプルコード

SystemColorButtonFaceColorという色(Windows.UI.Color)を取ってきて、 グリッドのBackgroundに適用する例。 (SystemColorButtonFaceColorは自分で作ったColorではなく、元からあるSystemの色。)

private void Button_Click(object sender, RoutedEventArgs e)
{
    var color = (Windows.UI.Color)Application.Current.Resources["SystemColorButtonFaceColor"];

    MainGrid.Background = new SolidColorBrush(color);
}

こちらは、ResourceDictionaryの中に自分で定義したSilidColorBrushを使う例。

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    var brush = (SolidColorBrush)Application.Current.Resources["MyButtonBackground"];

    MainGrid.Background = brush;
}

参考

docs.microsoft.com

参考書

WinUI3

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

C#①

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

C#②

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