eXtensible Application Markup Language Microsoftが開発した、次世代アプリケーション向けマークアップ言語である。 Windows Presentation Foundation(WPF, 開発コードネームAvalon)によるアプリケーション、コンテンツ開発等において使用される。
WPFでUIの表示切替のモードを選択するコンボボックスを作成するときに、コンボボックスの値をenumで定義できれば、内部処理の条件判定などがいい感じになるのでは?と思ったので色々と調べてみたところ、PrismのコミッターであるBrian Lagunasさんの解説動画がYoutubeにありました。 マークアップ拡張について、何となくの理解でいると応用が利かなそうなので、細かいところを勉強用にメモを残します。 Brian Lagunasさんの解説動画 詳しい解説やソースコードはBrian Lagunasさんの動画を参照してください。 enumとコンボボックスのバインドについて解説されています。 h…
前回より MAUI の Shell に触れ始めました。.NET MAUI のShell は、基本的に Xamarin.Forms のShell と機能が同じようで、モバイルアプリケーションの基本機能であるナビゲーション・・・平たく言えば、モバイルアプリの画面(ページ)遷移や検索等の機能を統合的に管理し、かつ操作を標準化する機能なようです。今回は複数のページを Shell でどのように遷移するのか、試してみたいと思います。 画面遷移の挙動確認用として、ContentPage をプロジェクトに三つ追加してみます。新規の MAUI プロジェクトを作成し、ソリューションエクスプローラでプロジェクトを選…
昨日の記事では、.NET MAUI で MVVM の実装を試みました。しかし現在様々なベンダーから MVVM デザインパターンをサポートするフレームワークが提供されており、これらを使えば容易にMVVM での開発を行なえます。今回は、CommunityToolkit を使って、.NET MAUI のサンプルを MVVM 化したいと思います。 docs.microsoft.com CommunityToolkit はプラットフォームやランタイムに依存せず、高パフォーマンスを期待できるフレームワークです。Visual Studio で .NET MAUI のプロジェクトを新規作成後、ソリューションエ…
先週に引き続き、.NET MAUI の記事です。 今回は ,NET MAUI 新規プロジェクト作成時のイベント処理を ViewModel を設け、MVVM のデータバインディングによる更新へ変更します。 新規プロジェクト作成時、ビューのカウンター処理は、ボタンクリックイベント内で SemanticScreenReader.Announce メソッドで更新されています。 ボタンクリックイベントの実装 SemanticScreenReader.Announce に関する詳細はこちら。 docs.microsoft.com これを ViewModel とのバインドに変更します。 まずはプロジェクトに…
前回に引き続き、.NET MAUI の記事です。 当方、Android・Mac は初心者なので、その辺を考慮して記事を読んで頂けば幸いです。 今回は iOS を選択して、Mac でサンプルを実行します。 まず下準備として、Mac に Visual Studio 2022 for Mac Preview をダウンロード・インストールします。 Visual Studio の MAUI プロジェクトのデバッグ実行をドロップダウンで「iOS Remote Device」に変更して、デバッグ開始します。 「リモートデバイス」をクリックすると、最初にガイダンスが表示されます。以下のアナウンスに従って、Ma…
またまた昨日に引き続き、.NET MAUI の記事です。 昨日、MAUI のサンプルプロジェクトを Android Emulator で実行してみましたが、正直あまりに遅すぎて使い物になりませんでした。そこでいろいろ調べたところ、@amay077さんの記事が見つかりました。 qiita.com Android Studio をインストールして設定する方法、良さ気です。この方法に従ってHyper-V を無効化して試してみたところ、比較的速く起動しました。その後、再度Hyper-Vを有効化して実行すると、あれサクッと起動した??ただしエミュレーターへのプログラムのロードから実までエラく時間かかりま…
昨日に引き続き、.NET MAUI の記事です。 昨日は WIndows 環境で実行しましたが、本日は Android Emulator で実行してみます。ソリューションは作成時のまま、試してみます。 Android Emulator は名前の通り Android での動作試験用エミュレーターです。初期状態では Android Emuloator はインストールされてないので、環境構築する必要があります。私は普段、WIndowsデスクトップアプリしか開発してので、Android エミュレーターの環境構築ははじめてです。 Android Emulator は仮想環境で動作するので Hyper-V…
[Microsoft] が 全く新しい UI Framework を公開した模様。 docs.microsoft.com ここ数年、多忙のためブログの更新が止まってましたが、久々に色々いじくりまわしてみたいと思います。 2022年4月19日現在、[.NET MAUI]はようやくリリース候補版(RC版・・・Release Candidate)が公開された状況です。よって Windows で .NET MAUI を弄るには、Windows を開発者モードに変更し、Visual Studio を最新のプレビュー版に変更する必要があります。 「スタート」ボタンから「設定」→「ホーム」→「更新とセキュリ…
▽▼Prismとは?▼▽ ・WPFアプリなどをMVVMパターンで作成するためのフレームワーク。 ・Visual StudioでPrism Template Packをインストールすることで使える。 ▽▼XAMLとは?▼▽ ・マークアップ言語。WPFのUI担当。 ・XAMLを使わないで、C#でもWPFアプリは作れる。 ▽▼ブックマーク▼▽ elf-mission.net Viewを作成したときに、行始めから記述されているおまじないなど。解説が丁寧。 atmarkit.itmedia.co.jp XAMLの基本的な(深い)話。 www.niwaka-plus.com Prism Template …
WPFでコンテキストメニューを表示する方法。 ▽▼完成図▼▽ ①Buttonコントロールにコンテキストメニューを設定して表示 ②<Window.ContextMenu>でコンテキストメニューを設定して表示 ③ボタン以外のコントロールでコンテキストメニューを表示 ▽▼ソースコード▼▽ ■MainWindow.xaml <Window x:Class="MyWorkProject.Views.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.mi…
Microsoft.Extensions.Logging ロガーの利用方法 static オブジェクトの利用 汎用ホストの利用 汎用ホストの利用(WPF) Microsoft.Extensions.Logging www.nuget.org docs.microsoft.com ロギング用のライブラリ。 ILogger インタフェースにロガーを注入して利用する。 以下に出力できる。 デバッグウィンドウ コンソール OSのイベントログ Microsoft 以外のライブラリも使用できる。 NLog、Log4Net など DI により、使用ライブラリを容易に切り替えられる。 Nuget より "Mi…
大変ご無沙汰しています。放浪軍師です。家事育児に追われる生活もだいぶ慣れてきた今日この頃ですが、みなさんは如何お過ごしでしょうか?気が付けば前回の更新から早3か月という、時が経つのは早いものですね。おそろしや… さて、先日 Xamarin.forms の後継である .NET MAUI が正式リリースとなりました。最近は Xamarin どころか C# にも触れていない身ではあるのですが、このブログが始まったのも、そして自分の技術力がない事に気が付いて転職したのも、すべて Xamarin が発端なので愛着というかそういうものがありますので、その後継である .NET MAUI にはやっぱ触れておか…
先日、非純正のXboxのコントローラーを買って、Steam経由でWindows11をデスクトップ操作できるようジョイスティックをマウス移動に割り当てて使っていたところ、スタートメニューや設定画面、さらにはピクチャ、ストアなどのUWPアプリの操作がジョイスティックに割り当てられていて、Aボタンで決定、Bボタンでキャンセル等、マウスポインタとは別の箇所にフォーカスが当たっていて挙動が変なことなっていました。PS4向けのホリパッドではならなかったのでXInputでの入力に反応しているのだろうと思いつつ、解決策を調べてみると出ました。ページの真ん中あたり。https://github.com/micr…
目次 目次 .NET MAUI リリース Xamarin.Forms と .NET MAUIの主な違い .NET MAUI のプロジェクト構成 Xamarin.Forms のアーキテクチャーに起因する問題点 Xamarin.Forms のレンダラーアーキテクチャー Xamarin.Forms レンダラーアーキテクチャーの問題点 .NET MAUI の最大の変更点 .NET MAUI で導入されたハンドラーアーキテクチャー .NET MAUI ハンドラーアーキテクチャーのアドバンテージ (参考)Generic Host .NET MAUI のスタートアップコードの例 MAUI 用の Generi…
はじめに WPFでChangeイベント等が発生した際にその値をイベント引数として取得する方法を備忘録として残します。 前提 Prismを利用していること Microsoft.Xaml.Behaviors.Wpfパッケージを入れていること サンプルコード 以下はコンボボックスの値が変更された際に変更後の値をイベント引数として受け取る際のXAMLです。 <ComboBox> <i:Interaction.Triggers> <i:EventTrigger EventName="SelectionChanged"> <prism:InvokeCommandAction Command="{Bindi…
はじめに WPFでボタンの活性/非活性を制御する方法を備忘録として残したいと思います。 前提 今回の記事はPrismを用いていることが前提となります。 ボタン生成 まずはボタンを生成します。 <Button Margin="10" Height="20" Width="65" Content="登録" Command="{Binding SubmitButton}" /> SubmitButtonをViewModel側へバインドしています。 ViewModelにてSubmitButtonを定義 バインドしたSubmitButtonをViewModel側で定義します。 コンストラクタにて初期値を…
XAML によるデータバインディングは WPF の大きな特徴です。とても便利な機能ではありますが、慣れるまでは難しさを感じる機能でもあります。データバインディングの難しさとしては、ウォッチウィンドウによるプロパティ値の確認ができない点があります。バインドした値が想定通りに表示されず、バインドするパスの修正に手間取ることもあると思います。今回は、データバインディングにまつわるいくつかのテクニックをご紹介し、問題解決に役立てていただければと思います。
もくじ https://tera1707.com/entry/2022/02/06/144447 やりたいこと 最近、家でPCを触るときは、いつもウェザーニューズ社の天気予報のyoutubeのライブ動画をずっと見ている。 動画の中で、きれいなお姉さんがお天気を解説してくれているのだが、その動画が、テレビのニュースなどよりも崩れた感じで話すので、なんとなく深夜ラジオを聴いている感じがして聞きながら作業するのにちょうどいい。あと目の保養。 その中でも、檜山沙耶さんというお天気キャスターの方が推しで、その方のまとめ動画をつい見てしまう。 (人気お天気キャスターランキングの2位らしい) www.you…
WPF/UWP などの XAML 系実装で使用する ViewModel は OSS(Livet, Prism ReactiveProperty) などを使用しない場合、INotifyPropertyChanged 周りの実装が冗長で、繰り返しが面倒なので軽減策の紹介したいと思います。 アプローチ方法は以下の通りです。 共通基底クラスを使用 プロパティはスニペット化 確認環境 VisualStudio2019 C# 9.0 Bindableクラス まず ViewModel の共通基底クラスとして Bindableクラスを以下のように宣言します。 using System; using Syste…
前回: hatsune.hatenablog.jp前回は、AzureポータルでTextAnalyticsを有効にして、Azure.AI.TextAnalytics SDKを使って「テキスト要約」を行うクライアントアプリの動作を確認してみました。 今回は、クライアントアプリからREST APIにて同様の動作を実現してみます。 準備 .NET 6ベースのWPFアプリとしてクライアントアプリを作成します。 新しいプロジェクトの作成 Visual Studio 2022で、新しいプロジェクトの作成で「WPFアプリケーション」のテンプレートを選択すると、.NET Frameworkベースではなく.NET…
Uno Platform、覚えていますか? 2018 年に OSS になり、日本では 2019 年 ~ 2020 年頃に話題になった複数プラットフォーム向けアプリを作る製品です。 特徴は C# + XAML で作れるところです。話題になった大きなポイントは 2 点。 WebAssembly が作れる XAML が UWP の XAML です。 1. は .NET 技術としては Blazor と競合しますが、Blazor WebAssembly の GA が 2022 年 05 月だったようで、その隙をついた形です。現在は Blazor WebAssemby の注目度が非常に高くなり、結果 Un…
2022-06-19現在のステータス。 https://eel3.hatenablog.com/entry/2021/06/20/211327 から1年経て、こうなっている。なおCSS、HTML、XMLはひとまず除外する。人工言語ではあるけれども「プログラミング言語」という括りに含められるか否かは議論が分かれる気がする。*1 よく使っている AWK (Gawk) 単純なテキストレコードの処理はAWKで十分間に合う。今の時代、自作ツールをnawkやGNU awk単体で実装するのは苦行すぎて*2皆無なものの、シェルスクリプトやMakefileにAWKのコードを埋め込むなどして他のコマンドと組み合わ…
最上位レベルステートメント args 引数 await キーワード フレームワークごとのエントリーポイント コンソール ASP.NET Core MVC WPF Form 最上位レベルステートメント docs.microsoft.com C# 9.0 以降で使用できる。 main メソッドから外側の記述を省略できる。 以下のフレームワークで、最上位レベルステートメントであることを確認。 コンソールアプリ ASP.NET MVC main メソッド内の記述のため... メソッドは定義できる。ローカル関数扱い。 プロパティ、読取専用フィールドは定義できない。 この記述が... using Syst…
動作の様子 Animation20220616_153227.gif できた コード 2022WPF/20220616_ComboBox_Colors_Binding/20220616_ComboBox_Colors_Binding at master · gogowaten/2022WPF github.com MainWindow.xaml <Window x:Class="_20220616_ComboBox_Colors_Binding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentatio…
フェッチ (fetch) プル (pull) 補足 origin ブランチ名 内容 リモートブランチ GitHub などのリモートリポジトリにあるブランチ リモート追跡ブランチ "origin/ブランチ名" ブランチリモートブランチのコピー。リモートブランチの変更を追跡する。 作業ブランチ ローカルでコミットするブランチ フェッチ (fetch) "リモートブランチ" の変更を "リモート追跡ブランチ" に反映する。 作業ブランチには影響しない。 ブランチやコミットログなど、リモート側の情報を把握できる。 プル (pull) フェッチの操作をした後..."リモート追跡ブランチ" の変更を "作…