Prism6.3のアップデートにおける変更点をまとめました。
以下をご覧ください。
今回はこれだけ!
本エントリーではPrism6.3で新たに追加された機能をいくつか紹介します。
Prism 6.3のXamarin.Forms向けで最も大きな変更があったのが画面遷移関連です。
機能追加もありますし、注意が必要な破壊的変更もあります。
Prism 6.3がリリースされてからすでに2カ月。書こう書こうと思っていたのですが、後回しにしまくっていたのでここに変更点をまとめます。
for Xamarin.Formsの範囲が対象となります。
と、言っておきながら、本エントリーではWPFおよびUWPとも共通のPrism.Coreの変更点です。
なお変更点の詳細は、次の記事と実際のソースの変更に基づいています。
http://brianlagunas.com/prism-6-3-release/
https://github.com/PrismLibrary/Prism/wiki/Release-Notes-6.3.0
.NETには、例えばinternalなクラスやメソッドのUnitTestをUnitTestプロジェクトから呼び出す仕組みとして、「InternalsVisibleTo」という属性があります。
従来の.NET Frameworkプロジェクトでは、プロジェクト作成時にPropertiesの下にAssemblyInfo.csが作成されその中に定義する方法が一般的でした。
しかし、.NET StandardにはAssemblyInfo.csが存在しません。
ここでは.NET StandardプロジェクトでInternalsVisibleToを設定する方法を紹介します。
続きを読むXamarin.Forms用の汎用Behaviorライブラリをリリースました!
コード&詳細ドキュメント(まだ下記中ですが)はこちらにあります。
たとえば、こんな感じでイベント発生時にEventのパスを指定してEventのプロパティを引数にCommandを実行したり
<ListView ItemsSource="{Binding Fruits}"> <ListView.Behaviors> <behaviorsPack:EventToCommandBehavior EventName="ItemTapped" Command="{Binding SelectedFruitCommand}" EventArgsPropertyPath="Item"/> </ListView.Behaviors>
public ICommand SelectedFruitCommand => new Command<Fruit>(fruits => { ... });
こんな感じで、ボタンクリック時に確認ダイアログを表示してからCommandを実行したり
<Button Text="Show Display Alert"> <Button.Behaviors> <behaviorsPack:DisplayAlertBehavior EventName="Clicked" Title="Alert Title" Message="Please select either." Accept="OK" AcceptCommand="{Binding AcceptCommand}" Cancel="Cancel""/> </Button.Behaviors> </Button>
Behavior作成時の基底クラスもいくつか用意しています。例えば親のBindingContextを継承するInheritBindingBehaviorとか。
色々便利です。多分。
良かったら使っていただけると嬉しいです。
ご要望はぜひIssueへ!
.NET Standardのプロジェクトをテストするために、.NET Standardのテストプロジェクトを作成するとxUnitのテストが認識されずテストできません。
現状ではつぎのようにすることで対応できます。
これで.NET Standardのプロジェクトのテスト自体はできます。
しかし、その.NET StandardのプロジェクトがPCLライブラリ(Xamarin.Formsなど)を参照していたりすると、もうひと手間必要です。
.csprojをメモ帳などで開いて、PackageTargetFallbackを追記してあげてください。手で。
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>netcoreapp1.1</TargetFramework> <PackageTargetFallback>$(PackageTargetFallback);portable-win+net45+wp8+win81+wpa8</PackageTargetFallback> </PropertyGroup>
これでいけるはずです。