はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Xamarin.Forms 2.xと3.0の違い(Xamarin.Forms.Application.Current.Resources)

App.csのコンストラクタで、Xamarin.Forms.Application.Current.Resourcesの初期状態が、Xamarin.Forms 2.xとXamarin.Forms 3.0では異なっていました。

2.x:null

3.0:not null

問題点

そのため、nullだったらCurrent.Resourcesに項目をAddするようなロジックにした場合、2.xでは正常に動作し、3.0ではAddしないため、XAML

BackgroundColor="{StaticResource BorderBrush}"

のような参照をしていると、そこで実行時エラーになってしまいました。

対策

if (Xamarin.Forms.Application.Current.Resources == null || Xamarin.Forms.Application.Current.Resources.Count == 0)

のようにCount判定も追加する。