🌊

.NET + AvaloniaUI 制作日誌①

2023/04/14に公開

はじめまして。プログラミングに関する技術的なメモをここで記録しておこうと思います。
(もしかしたら誰かのお役に立つこともあるかもしれないし。)
NOTEは使いやすいし見やすいけど、ちょっと分量のある技術分野のテキストだとあまり向いてない。

Avalonia v11 previewについて

Avaloniaはv11からIMEのインライン入力に対応したため、
日本語を扱いたいデスクトップアプリの場合は最新のプレビュー版を使いたいところだと思います。
しかし、いくつかの破壊的変更が行われているため、注意すべき点があります。

まずVisualStudioを使っている場合、最新のPreview版(2023/4/14時点でpreview6)では、
現在MVVMテンプレートの一部が機能しません。

これを。

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="using:YourNameSpace"
             x:Class="YourNameSpace.App">
    <Application.DataTemplates>
        <local:ViewLocator/>
    </Application.DataTemplates>

    <Application.Styles>
        <FluentTheme Mode="Light"/>
    </Application.Styles>
</Application>

こうする。

<Application xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="using:YourNameSpace"
	     RequestedThemeVariant="Light"
             x:Class="YourNameSpace.App">
    <Application.DataTemplates>
        <local:ViewLocator/>
    </Application.DataTemplates>

    <Application.Styles>
        <FluentTheme />
    </Application.Styles>
</Application>

その他の雑記

  • IMEに対応したと言っても、なんかまだちょっと怪しい気がします。検証中。

  • CefGlueやCefNetはまだv11に対応していません。WebView2のラッパーもありますがv11では動かないようなので、事実上、現在v11では手軽に扱えるマルチプラットフォームのブラウザコントロールは無いと言ってよいと思います。困ったね。WebView2のMac版待ちかな…。

  • FruentAvaloniaについて
    このライブラリは簡単にモダンなインターフェースを実装出来て便利なのですが、
    XAML上で直接バインドできないプロパティも多くて、MVVMで扱うには色々と癖があります。(作者があんまりMVVMとかDIが好きじゃないそうです)
    まず、NavigationViewやFrameコントロールはReactiveUIと相性が悪いようです。
    これらのコントロールでスレッドアクセスに関するエラーが出る場合は出来ればCommunityToolKit.MVVMか、他のライブラリを試してみてください。

  • AvaloniaEditについて
    現在開発しているアプリのコアになるライブラリなのですが、こちらもテキストをXAML上で直接バインドできない?ようで色々とコードビハインドの処理が必須です。あとやっぱりIME周りが怪しくて検証中。
    また、preview6ではテーマの呼び出し方が変わったようです。
    preview5 -> avares://AvaloniaEdit/AvaloniaEdit.xaml
    master/preview6 -> avares://AvaloniaEdit/Themes/Fluent/AvaloniaEdit.xaml

ビヘイビアを使ってバインドする例が載ってた。助かる。
https://github.com/AvaloniaUI/AvaloniaEdit/wiki/MVVM#install-packages

色々と振り回されてだいぶコードがカオスになってきたので、やっぱり個人開発のアプリだしMVVMあきらめようかなぁ。

Discussion