【问题标题】:Xamarin.Forms.Xaml.XamlParseException: MarkupExtension not foundXamarin.Forms.Xaml.XamlParseException: 找不到 MarkupExtension
【发布时间】:2014-10-30 15:59:34
【问题描述】:

我正在尝试将自定义标记扩展与 Xamarin 表单一起使用,以便最终实现本地化。我正在尝试深入了解 Xamarin 表单示例。

这是一段使用扩展的 XAML 代码:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:CRI.MAP.Mobile.Views;assembly=CRI.MAP.Mobile"
    x:Class="CRI.MAP.Mobile.Views.CustomerSearchPage">

    <StackLayout>
        <Button 
            Text="{local:Translate Clear}"  
            Command="{Binding ClearCommand}" />
    </StackLayout>

这是翻译扩展标记的代码:

using System;
using Xamarin.Forms.Xaml;
using Xamarin.Forms;
using System.Diagnostics;

namespace CRI.MAP.Mobile.Views
{
    // You exclude the 'Extension' suffix when using in Xaml markup
    [ContentProperty ("Text")]
    public class TranslateExtension : IMarkupExtension
    {
        public string Text { get; set; }

        public object ProvideValue (IServiceProvider serviceProvider)
        {
            //if (Text == null)
            //  return null;
            //Debug.WriteLine ("Provide: " + Text);
            // Do your translation lookup here, using whatever method you require
            //var translated = L10n.Localize (Text); 

            //return translated;
            return "hello";
        }
    }
}

我注释掉了一些代码,以防万一这是问题的原因。

每当我尝试运行它时,我都会收到错误:Xamarin.Forms.Xaml.XamlParseException: MarkupExtension not found for local:Translate。我很困惑为什么它没有找到标记扩展,因为我看到的所有示例似乎都是以相同的方式完成的。有人知道为什么会这样吗?在寻找 Xamarin 表单的好例子时,我遇到了很多麻烦。

【问题讨论】:

    标签: c# xaml xamarin.forms markup-extensions


    【解决方案1】:

    程序集名称错误。我正在为 Xamarin 表单使用共享项目,并将共享项目的名称作为程序集的名称。因此,如果您有一个共享项目,则程序集的名称需要是使用共享项目的程序集。

    【讨论】:

    • 嗨,米歇尔,感谢分享!您是如何设法从 XAML 处理不同的命名空间(iOS、Droid、WinPhone)的?我的意思是,如果您的程序集是assembly=MyApp,则在为 WP 构建时需要更改为 assembly=MyApp.WinPhone,在为 Android 构建时需要更改为 MyApp.Droid,usw...
    • 记住我正在做一个共享项目,所以我将它设置为每个项目的相同程序集名称。程序集名称在 iOS、Android 和 Windows 的每个项目的构建属性中定义。命名空间指的是我在其中编写扩展的命名空间。这样更有意义吗?
    • 是的,我最终得到了相同的解决方案。 Xamarin 摇滚 ;)
    • 当我用小写 b 而不是大写字母拼写“绑定”时,我收到了类似的错误消息,例如(错误)。
    • Damien Sawyer,你救了我的命,对我来说是“Bindig”。这应该是另一个答案,而不是评论:)
    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多