クロスプラットフォームXAML UIフレームワークAvaloniaUI 0.5のリリース

クロスプラットフォームXAML UI AvaloniaUIフレームワークのバージョン0.5(以前はPerspexと呼ばれていました)がリリースされました。 フレームワークは、WPF / UWPと同じ原則に従って作成されます。つまり、XAML、バインダー、およびテンプレートコントロールを使用します。 現時点では、これが実際のXAMLでUIを作成する唯一の方法であり、Windows、OS X、およびLinuxで動作します(iOSおよびAndroidの実験的なサポートもあります)。







CPAP







組み込みコントロールのカタログ (gif 3MB)







Visual Studio 2017のアドオンをダウンロードし、テンプレートからプロジェクトを作成することにより、フレームワークの使用を開始できます。 wikiのドキュメントもご覧ください。







このリリースでは、.NET Coreのサポート、* nixシステムのGTK3への移行、Linux fbdev経由の出力のサポート、拡張システム、多くのエラーが修正されました。







.NET Core



.NET Coreはビルドターゲットとしてサポートされ(Visual Studioのプレビューをサポートするには、net461をTargetFrameworksに追加する必要があります)、3つのデスクトッププラットフォームすべてで動作します。 また、 netstandard1.1



固有ではないライブラリについてはnetstandard1.3



に、Win32、GTK3、およびSkiaのバックエンドについてはnetstandard1.3



ました。 新しいdotnetのテンプレートはこちらです。







* nixプラットフォーム上のGTK3



GTK#バインダーは使用しなくなりました。これは、プラットフォームごとにネイティブバイナリをビルドする必要があり、Monoに関連付けられています。 代わりに、GTKとの対話はP / Invokeを介して直接行われるため、バックエンドがnetstandard1.3



互換性を持つようにnetstandard1.3



。 * nixシステムのボーナスとして、スムーズなスクロールが得られました。 GTK3を使用しないディストリビューションのサポートが必要な場合でも、古いGTK2バックエンドに切り替えることができます。







OS Xでは、 brew install gtk+3



GTK3をインストールする必要があります。 将来的には、OSXへのこの依存関係は解消されます。これは、netstandard2.0の上にMonoMacを搭載することが可能であったためです。







モバイルサポートの機能強化



デスクトップウィンドウの存在を真にエミュレートしようとはしていません。 そのため、モバイルプラットフォームではWindowクラスを使用できなくなりました。 代わりに、各プラットフォームに固有のAvaloniaView



クラスは、XAMLコントロールを配置するContent



プロパティと共にAvaloniaView



れます。 便宜上、Android用のUIWindow



とiOS用のUIWindow



UIWindow



が統合されたUIWindow



)も提供されます。 したがって、初期化は次のようになります。







 public override bool FinishedLaunching(UIApplication uiapp, NSDictionary options) { AppBuilder.Configure<App>() .UseiOS() .UseSkia().SetupWithoutStarting(); Window = new AvaloniaWindow() {Content = new YOUR_CONTROL_HERE(){DataContext = ...}}; Window.MakeKeyAndVisible(); return true; }
      
      





 public class MainActivity : AvaloniaActivity { protected override void OnCreate(Bundle savedInstanceState) { if (Avalonia.Application.Current == null) { AppBuilder.Configure(new App()) .UseAndroid() .SetupWithoutStarting(); } Content = YOUR_CONTROL_HERE(){DataContext = ...}; base.OnCreate(savedInstanceState); } }
      
      





Linux fbdev



fbdevを介した出力とlibevdev2を介した入力の初期サポートが追加されました。 これにより、Xサーバーなしで組み込みLinuxデバイスでフレームワークをさらに使用できるようになります。







WPF / Winforms / GTK2への埋め込み



AvaloniaUIコントロールを表示できるこれらのプラットフォーム固有のコントロールが利用可能になりました。 モバイルプラットフォームとの類推によって配置されます。







拡張性システム



優先システムを備えたプラットフォームの自動検出の改善。 これまでのところ、完全な.NETでのみ機能します。 また、サードパーティライブラリのさまざまな種類の依存関係を自動登録するためのツールも含まれています。 説明については、プール要求を参照してください。







^バインダーの演算子



以前は、システムはプロパティチェーンでIObservable



れたすべてのIObservable



Task



を自動的にサブスクライブしようとしました。 これにより、IObservableを実装するクラスのプロパティにバインドしようとすると問題が発生しました。 あいまいさを避けるために、演算子^が導入されました。 次のように使用できます。







 <!-- Bind to the values produced by Content.Observable --> <TextBlock Text="{Binding Content.Observable^}"/> <!-- Bind to the Name property on the values produced by Content.Observable --> <TextBlock Text="{Binding Content.Observable^.Name}"/>
      
      





演算子は拡張性をサポートしています。IStreamPluginを実装する必要があります







サードパーティのライブラリ



前のリリース以降、それらは移植されており、ある程度機能しています。









最新バージョンをサポートするためのライブラリはまだ更新されていません。これは、リリースが昨日だけにnugetで公開されたためです。







多くのバグが修正されました



githubで133件の問題/ PRをクローズしました。 すべてがエラーではありませんでした。 完全なリストはここにあります







私たちは常に貢献者に対抗できることを嬉しく思っています。 あなたが助けてくれると思うか、質問があるだけなら、 私たちの雑談をノックしてください








All Articles