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の拡張機能は次を実装します。- 増やす
- 背景色の設定
- 添付プロパティとマークアップ拡張機能の自動補完サポート
- clr-namespaceのサポートにより、コントロールの自動補完を取得できます(再構築することを忘れないでください。現在、メタデータはdll-okからのみ差し引かれています)
-
Design.DataContext
、Design.Width
、Design.Height
サポートDesign.DataContext
、Design.Width
モデルを使用して、この幸福がデザイナーで直接どのように見えるかを確認できます(この目的にはStatic
マークアップ拡張機能を使用します)
「直接」プロパティ
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