我使用适用于Windows Phone 8.1(RT)的Xamarin Forms创建了应用程序。我将XF更新到最新版本2.3.4.231。我的应用程序运行到:
-windows phone 8.1 device
-windows phone 8.1 emulator
-mobile emulator 10.0.14393(x86)
工作还可以。 但是,当我运行应用程序到Windows 10设备(手臂)时,我有很多例外。我尝试不同的起始页面并获得mane异常(来自xaml):
-Cannot assign property \"ColumnDefinitions\": Property does not exists, or is not assignable, or mismatching type between value and property"
-StaticResource not found for key ...
-An item with the same key has already been added
所有这些错误都与xaml有关。 我不使用XamlCompilationOptions.Compile。
我的应用2.3.2.127的最新工作版XF
这个小例子: 我改变了起始页面。我有例外:
-StaticResource not found for key StandardPadding
这是我页面的一部分:
<StackLayout Padding="{StaticResource StandardPadding}">
我在App.xaml中的资源:
<Application.Resources>
<ResourceDictionary>
<Thickness x:Key="StandardPadding">16</Thickness>
</ResourceDictionary>
</Application.Resources>
答案 0 :(得分:0)
我解决了这个问题。错误发生在我的xaml代码中。 Xamarin Forms 2.3不支持xaml中的Windows OnPlatform。所以我使用了这个扩展名:
public class XOnPlatform<T> : OnPlatform<T>
{
public T Windows { get; set; }
public static implicit operator T(XOnPlatform<T> onPlatform)
{
if (Device.OS == TargetPlatform.Windows)
{
return onPlatform.Windows;
}
return (OnPlatform<T>)onPlatform;
}
}
我在我的xaml代码中使用了这个类。但是在XF 2.3.4中,Device.OS已经过时了。我从我的xaml代码中删除了XOnPlatform。我在我的xaml代码中使用OnPlatform。这是工作。宾果:)