未找到标记扩展
Markup extension not found
我正在研究 Microsoft 页面中的文档,因为我愿意学习 xamarin.forms。
每当引入新主题时,我都会尝试编写一个小应用程序来测试我刚刚学到的知识。
在试验 xaml 标记扩展时,我发现微软文档中显示的示例之一对我不起作用,即使我从网站复制它并将其粘贴到我的 vs 项目中也是如此。
C#代码是这样的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace XamarinLab
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
}
public class HslColorExtension : IMarkupExtension<Color>
{
public double H { set; get; }
public double S { set; get; }
public double L { set; get; }
public double A { set; get; } = 1.0;
public Color ProvideValue(IServiceProvider serviceProvider)
{
return Color.FromHsla(H, S, L, A);
}
object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
{
return (this as IMarkupExtension<Color>).ProvideValue(serviceProvider);
}
}
}
并且 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:XamarinLab"
x:Class="XamarinLab.MainPage">
<ContentPage.Resources>
<ResourceDictionary>
<Style TargetType="BoxView">
<Setter Property="WidthRequest" Value="80" />
<Setter Property="HeightRequest" Value="80" />
<Setter Property="HorizontalOptions" Value="Center" />
<Setter Property="VerticalOptions" Value="CenterAndExpand" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<StackLayout>
<BoxView>
<BoxView.Color>
<local:HslColorExtension H="0" S="1" L="0.5" A="1" />
</BoxView.Color>
</BoxView>
<BoxView>
<BoxView.Color>
<local:HslColor H="0.33" S="1" L="0.5" />
</BoxView.Color>
</BoxView>
<BoxView Color="{local:HslColorExtension H=0.67, S=1, L=0.5}" />
<BoxView Color="{local:HslColor H=0, S=0, L=0.5}" />
<BoxView Color="{local:HslColor A=0.5}" />
</StackLayout>
</ContentPage>
当我尝试 运行 应用程序时,弹出以下异常
markup extension not found for local:HslColorExtension
我复制的示例位于:https://docs.microsoft.com/it-it/xamarin/xamarin-forms/xaml/markup-extensions/creating
这是第一个例子,在此先感谢您的帮助。
您需要在您的项目中创建一个名为 HslColorExtension
的新文件 Class,而不是在 MainPage 文件中创建一个 class,因为它无法识别命名空间或 class 创建。
只需将该部分移动到一个新文件中,您就应该完成所有设置。
您可以查看 Offical Sample,了解结构、文件以及如何设置。
我正在研究 Microsoft 页面中的文档,因为我愿意学习 xamarin.forms。 每当引入新主题时,我都会尝试编写一个小应用程序来测试我刚刚学到的知识。 在试验 xaml 标记扩展时,我发现微软文档中显示的示例之一对我不起作用,即使我从网站复制它并将其粘贴到我的 vs 项目中也是如此。
C#代码是这样的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace XamarinLab
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
}
public class HslColorExtension : IMarkupExtension<Color>
{
public double H { set; get; }
public double S { set; get; }
public double L { set; get; }
public double A { set; get; } = 1.0;
public Color ProvideValue(IServiceProvider serviceProvider)
{
return Color.FromHsla(H, S, L, A);
}
object IMarkupExtension.ProvideValue(IServiceProvider serviceProvider)
{
return (this as IMarkupExtension<Color>).ProvideValue(serviceProvider);
}
}
}
并且 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:XamarinLab"
x:Class="XamarinLab.MainPage">
<ContentPage.Resources>
<ResourceDictionary>
<Style TargetType="BoxView">
<Setter Property="WidthRequest" Value="80" />
<Setter Property="HeightRequest" Value="80" />
<Setter Property="HorizontalOptions" Value="Center" />
<Setter Property="VerticalOptions" Value="CenterAndExpand" />
</Style>
</ResourceDictionary>
</ContentPage.Resources>
<StackLayout>
<BoxView>
<BoxView.Color>
<local:HslColorExtension H="0" S="1" L="0.5" A="1" />
</BoxView.Color>
</BoxView>
<BoxView>
<BoxView.Color>
<local:HslColor H="0.33" S="1" L="0.5" />
</BoxView.Color>
</BoxView>
<BoxView Color="{local:HslColorExtension H=0.67, S=1, L=0.5}" />
<BoxView Color="{local:HslColor H=0, S=0, L=0.5}" />
<BoxView Color="{local:HslColor A=0.5}" />
</StackLayout>
</ContentPage>
当我尝试 运行 应用程序时,弹出以下异常
markup extension not found for local:HslColorExtension
我复制的示例位于:https://docs.microsoft.com/it-it/xamarin/xamarin-forms/xaml/markup-extensions/creating
这是第一个例子,在此先感谢您的帮助。
您需要在您的项目中创建一个名为 HslColorExtension
的新文件 Class,而不是在 MainPage 文件中创建一个 class,因为它无法识别命名空间或 class 创建。
只需将该部分移动到一个新文件中,您就应该完成所有设置。
您可以查看 Offical Sample,了解结构、文件以及如何设置。