Windows Phone 8.1(RT)中的Xamarin表单 - xaml异常

时间:2017-04-13 18:32:48

标签: xaml windows-phone-8.1 xamarin.forms win-universal-app

我使用适用于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>

1 个答案:

答案 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。这是工作。宾果:)