デスクトップアプリの話 2023

8.1K Views

June 03, 23

スライド概要

Windows フォームアプリのデータバインディング

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

デスクトップアプリ の話 2023 .NET の 3 日間 ~3 コミュニティ合同イベント~ 石崎 充良 1 / 31

2.

自己紹介 石崎 充良 ( @mishi_cs ) C# Tokyo コミュニティ管理メンバー GitHub: https://github.com/m-ishizaki blog: https://rksoftware.hatenablog.com/ 2 / 31

3.

今日はデスクトップアプリのお話です デスクトップアプリ、 使っていますか? 3 / 31

4.

アプリの種類(雑) アプリの種類 デスクトップ モバイル Web WebAssembly VR ヘッドセット 4 / 31

5.

アプリの種類(雑) アプリの種類 デスクトップ モバイル Web WebAssembly VR ヘッドセット アプリの種類 Office とか ゲームとか VR とか エディタとか ブラウザとか 業務アプリとか 5 / 31

6.

アプリの種類(雑) アプリの種類 Office とか ゲームとか VR とか エディタとか ブラウザとか 業務アプリとか アプリの種類 WinUI WPF Blazor MAUI Windows フォーム 6 / 31

7.

皆さんの関心事 アプリの種類 Office とか ゲームとか VR とか エディタとか ブラウザとか 業務アプリとか アプリの種類 WinUI WPF Blazor MAUI Windows フォーム 7 / 31

8.

ブログ記事 (私の) 8 / 31

9.

去年度からの私のブログでの記事数 検索ワード forms winui wpf maui blazor 記事ヒット数 26 27 24 27 18 https://rksoftware.hatenablog.com/ 9 / 31

10.

皆さんの関心事 アプリの種類 WinUI WPF Blazor MAUI Windows フォーム 話題 粛々と実装が進む 粛々と使われている WebAssembly モバイル 実装の進捗がアッピールされる 10 / 31

11.

どんなことを書いていたのか 話題 Blazor Microsoft Build Uno Platform WinUI MAUI (WinForms)データバインディング Visual Studio のアップデート 記事ヒット数 6 1 1 2 1 11 2 11 / 31

12.

データ バインディング 12 / 31

13.

データバインディングとは 現役の UI を持つ .NET アプリでは (Windows フォームアプリを除いて) 標準装備で基本 技術として使われるもの。 アプリの「UI」と「データ・ロジック」の結合を疎にできるため、プログラムが作りや すくなる(※効果には個人差があります)。 データバインディングを 使用しない伝統的コード例 テストの際には UI に温かみのある手操作で 入力→ボタン押下→結果を目視 この計算式が正しいと確認できる数 値パターンを手操作と目視でテスト 13 / 31

14.

データバインディングとは 現役の UI を持つ .NET アプリでは (Windows フォームアプリを除いて) 標準装備で基本 技術として使われるもの。 アプリの「UI」と「データ・ロジック」の結合を疎にできるため、プログラムが作りや すくなる(※効果には個人差があります)。 データバインディングを 使用しない伝統的コード例 テストの際には UI に温かみのある手操作で 入力→ボタン押下→結果を目視 この計算式が正しいと確認できる数 値パターンを手操作と目視でテスト 14 / 31

15.

データバインディングコード このクラスはテストできる 15 / 31

16.

Windows フォーム アプリの データバインディング 16 / 31

17.

UI デザイナーで設定可能 プロジェクト内の (条件に合っ た) クラスが自動で列挙される 17 / 31

18.

バインディングする プロパティを選択 ボタンの Command もバインディング (ボタンの押下処理) 18 / 31

19.

こんなコードが生み出されます でも、動かない 動いた! これを書き足す 19 / 31

20.

BindingSource Windows フォームのコントロールにはデータバインディングのソースを設定する DataContext というプロパティがある。 UI の要素の親子で伝播してくれるものの、何もしてくれない。 Form の DataContext へのセットが 子の TextBox へもセットされている バインディングされている ViewModel に影響なし 20 / 31

21.

BindingSource の DataSource BindingSource の DataSource に 別の ViewModel をセット TextBox、Label、Button すべての データソースが変わった! 21 / 31

22.

デザイナーでなくコードの場合 こんな感じのコードで良いのでは リテラルでなく nameof するのも good! 22 / 31

23.

ViewModel のセット 23 / 31

24.

直接 ViewModel をセットしても動く 動く! BindingSource を使っても 1 行増えるだけだしメリットもある メリット:うわさの一括差し替え 24 / 31

25.

対応している コントロール 25 / 31

26.

一部はプレビュー機能の設定が必要 エラーが表示されている .csproj ファイルで 「プレビュー機能を有効」 設定すれば解消 26 / 31

27.

Control と BindableComponent クラス Control クラス (とその 導出/派生/サブ/子 クラス) と BindableComponent クラス (同 様) にデータバインディング用プロパティが実装されている。 https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control?view=windowsdesktop-8.0 https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.bindablecomponent?view=windowsdesktop-8.0 27 / 31

28.

色々な対応コントロール https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.containercontrol?view=windowsdesktop-8.0 https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.forms.scrollablecontrol?view=windowsdesktop-8.0 28 / 31

29.

まとめ 29 / 31

30.

まとめ ⚫ Windows フォームアプリは注力され進化している ⚫ Windows フォームアプリ使いは今すぐデータバインディン グ! ⚫ 上司やメンバーの説得は自己責任で 30 / 31

31.

ありがとうございました。 【オンライン】2023年! C# Tokyo イベント 石崎 充良 31 / 31