【问题标题】:Define xmlns in Xamarin Forms在 Xamarin 表单中定义 xmlns
【发布时间】:2016-04-25 09:07:17
【问题描述】:

我创建了一个 Xamarin Forms 应用程序。我创建了另一个 PCL 库来保存 UI 常量,例如颜色代码。

便携式项目名称为 App。 PCL 库项目是 Utilities。 在我的 PCL 库中定义了这个

namespace App.Utilities
{
    public class Colors
    {
        public static Color ColorCode1 = Color.Aqua;
    }
}

试图像这样在 xcml 文件中定义 xmlns。

xmlns:colors="clr-namespace:App.Utilities.Colors;assembly=App.Utilities"

但它抛出 xaml 解析异常,说找不到上述命名空间。

有什么帮助吗?

【问题讨论】:

    标签: c# xaml xamarin xamarin.forms


    【解决方案1】:

    XMLNS 声明语法正确。命名空间不需要包含类名。所以在这种情况下,命名空间必须是 App.Utilities 而不是 App.Utilities.Colors。将其更改为

    xmlns:colors="clr-namespace:App.Utilities;assembly=App.Utilities"
    

    只要你的程序集名称正确就可以工作。

    您可以通过右键单击 PCL Forms 项目 > 选项 > 输出(构建中)来验证您的程序集名称是否正确。在那里我们可以看到正确的程序集名称。

    【讨论】:

    • 你刚刚救了我。但我还有另一个问题。我分别在 iOS 和 Android 平台上看到了 HelloWorld.iOS 和 HelloWorld.Droid。有没有办法通用地定义这个平台?
    • 您的要求对我来说似乎并不明确。你能再解释一下吗?
    • 您提到通过右键单击项目来查看程序集名称。我的应用程序是一个跨平台应用程序,它在同一个解决方案中同时拥有 iOS 和 Android 项目。 iOS 项目的汇编名称为 HelloWord.iOS,Android 项目的汇编名称为 HelloWord.Droid。
    • 现在,我添加了 xmlns:colors="clr-namespace:HelloWorld;assembly=HelloWorld.iOS" ,它在 iOS 中有效,但在 android 中显然无效。为了在 Android 中实现这一点,我必须将程序集名称更改为 HelloWorld.Droid。你现在能解决我的问题吗?
    • 您是否使用 PCL 进行代码共享或共享资产项目?因为在问题中提到的场景中,使用了 PCL,并且在 PCL 中定义了 Utitlity Class Colors(需要在 XAML 中引用)。所以基本上使用了 PCL 项目的 Assembly 名称,而不是 Android 或 iOS 项目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2021-06-28
    • 2020-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    • 1970-01-01
    相关资源
    最近更新 更多