iOS / AndroidをサポートするPerspex UIフレームワークの3番目のアルファバージョン

Perspexの3番目のアルファバージョンを発表できることを嬉しく思います( 前回の発表を参照)。

Perspexは、XAML、バインダー、コントロールテンプレート、独自のレンダリングシステム、およびその他の機能を備えた、WPFのイメージで作成された.NET用のクロスプラットフォームオープンソースUIフレームワークです。



このリリースでは、iOSおよびAndroidプラットフォームの初期サポートが追加され、デザイナーとXAMLが改善され、多くのバグが修正されました。







カットの下の変更のリスト。




iOS / Android

新しいSkiaベースのC ++バックエンドを使用すると、すべてのプラットフォームで単一の描画コードを使用できるようになりました(WinRTを除き、現在のDirect2Dバックエンドはそこから開始する必要があります)。これにより、モバイルプラットフォームにすばやく移植することができました。 現時点では、サポートは基本レベルのみです(ビデオを参照)。マルチウィンドウ、ポップアップ、テキスト入力はiOSでは機能せず、ジェスチャーはマウスイベントに変換されますが、現在作業中です。 将来的にネイティブバックエンドを使用すると、libmonoとNativeActivityを使用するため、Xamarinを使用せずにAndroid用にビルドできます。 iOSではすべてがやや複雑です。LGPLライセンスではMonoランタイムの使用が許可されていないため、iOS coreclrで起動する可能性を待つ必要があります。



Xaml

XAMLバインディングの以前のバージョンでは少しバグがありましたが、このバージョンでは多くの作業が行われていたため、非常に自信を持って使用できます。 MultiBinding



部分的なサポートMultiBinding



(これまでは一方向のみ)、標準バインダーにいくつかの拡張機能が追加されました。



コントロールへのバインド

代わりに
 <TextBox Text="{Binding ElementName=other, Path=Text}>"
      
      



書ける
 <TextBox Text={Binding #other.Text}>
      
      





非同期バインディング

Task



またはIObservable



を返すプロパティにバインドできるようになりました。バインダーシステム自体が、必要なすべてを処理します。



値の反転

ブール値を反転するために、プリミティブコンバーターを作成したことがありますか? これにシンボルを使用できます!



バインディングの方法で。

 <Button IsEnabled="{Binding !IsBusy}">
      
      







XAMLのコントロールテンプレート

以前は、テンプレートはコードからしか設定できませんでしたが、現在では標準テーマでもXAMLに完全に変換されています。



リストボックスでの複数選択

現在、ListBoxは複数の要素の選択をサポートしており、WPFのようにItemContainerStyleを使用することなく 、両方向でモデルにバインドできます。



デザイナー

Visual Studioの拡張機能は次を実装します。





「直接」プロパティ

PerspexProperty



、WPFのDependencyProperty



と同様にPerspexProperty



ものなので、通常のプロパティをバインドするものに変換するサポートを追加しました。 次のようになります。

 public static readonly PerspexProperty<bool> IsFocusedProperty = PerspexProperty.RegisterDirect<InputElement, bool>("IsFocused", o => o.IsFocused); public bool IsFocused { get { return _isFocused; } set { SetAndRaise(IsFocusedProperty, ref _isFocused, value); } }
      
      





INotifyPropertyChanged



およびGetObservable



実装でこのプロパティをサポートします。








フレームワークは急速に開発されていますが、まだアルファ版であるため、すべての色と色のバグがたくさんあり、パフォーマンスの問題がありますが、まだ誰も実際に作業していないため、場所でメモリリークが発生する可能性があります。 上記のいずれかを見つけたら、githubで問題開始してください。 現在、バグレポートの主なサプライヤーは、WPFからPerspexにアプリケーションを移植しようとしている組み込みシステムVitalElement StudioのChartエディターCore2DおよびIDEの作成者です



Core2Dの作成者は、この分野でいくつかの進歩を遂げました。 冬の終わりには、ベータ版を展開する予定です。ベータ版は、小規模なアプリケーションで動作する準備が整ったものと考えることができます。

質問やGitterの居心地の良いチャットルーム (英語のチャ​​ットルーム、快適さにもかかわらず)で私に連絡することができます。



GitHubリポジトリ

Gitter Chat

Nugetのパッケージ: Perspex, Perspex.Desktop, Perspex.Android, Perspex.iOS





ナイトリービルド用のNuGetフィード: www.myget.org/F/perspex-nightly/api/v2/Packages






All Articles