Xamarin 表单:找不到自定义扩展
Xamarin Form: Custom Extension not found
我在 Common Assembly 名称下创建了一个 ImageResourceExtension class。我在 属性 window 设置中检查了 Reference 下的名称。此扩展的命名空间是 Extension.Common。
使用此 Common Assembly 的工作项目的 xaml 声明为:
xmlns:common="clr-namespace:Extension.Common;assembly:Common"
元素写成:
<common:BooleanToObjectConverter x:Key="boolToStyleImage"
x:TypeArguments="Style">
<common:BooleanToObjectConverter.FalseObject>
<Style TargetType="Image">
<Setter Property="HeightRequest" Value="20" />
<Setter Property="Source" Value="{common:ImageResource Common.Images.error.png}" />
</Style>
</common:BooleanToObjectConverter.FalseObject>
图像存储在 Images 目录中的 Common 项目文件夹中
我将 ImageResource 文件命名为 ImageResourceExtension.cs 并尝试了 ImageResource.cs 但 none 有效。它只是给我一个例外说:
MarkupExtension not found for common:ImageResource
我不知道出了什么问题。已完成博客的所有步骤。
我放置那些 xaml 东西的项目在一个共享项目中。不知道会不会有什么不同
希望我理解你的问题!
看这段代码:
[ContentProperty("Source")]
public class ImageSourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Source == null)
{
return null;
}
// Do your translation lookup here, using whatever method you require
var imageSource = ImageSource.FromResource("Project.Images." + Source);
return imageSource;
}
}
现在,如果您想像在 xaml 中那样使用图像,类似的东西应该可以工作:
<Image Source="{extension:ImageSource LogoProject.png}"/>
注意1:我只放了图片的名字,因为在扩展中,路径是自动放的;)
注意 2: 你必须像我下面那样输入 assembly/namespace:
xmlns:extension="clr-namespace:Project.Sources.Extensions;assembly=Project"
此外,您的图像必须是 EmbeddedResource,不要忘记这一点。对于路径,它是 Project.Path.Image.png
而不是汇编 ;)
我希望我理解你的问题,我可以帮助你:)
我在 Common Assembly 名称下创建了一个 ImageResourceExtension class。我在 属性 window 设置中检查了 Reference 下的名称。此扩展的命名空间是 Extension.Common。
使用此 Common Assembly 的工作项目的 xaml 声明为:
xmlns:common="clr-namespace:Extension.Common;assembly:Common"
元素写成:
<common:BooleanToObjectConverter x:Key="boolToStyleImage"
x:TypeArguments="Style">
<common:BooleanToObjectConverter.FalseObject>
<Style TargetType="Image">
<Setter Property="HeightRequest" Value="20" />
<Setter Property="Source" Value="{common:ImageResource Common.Images.error.png}" />
</Style>
</common:BooleanToObjectConverter.FalseObject>
图像存储在 Images 目录中的 Common 项目文件夹中
我将 ImageResource 文件命名为 ImageResourceExtension.cs 并尝试了 ImageResource.cs 但 none 有效。它只是给我一个例外说:
MarkupExtension not found for common:ImageResource
我不知道出了什么问题。已完成博客的所有步骤。
我放置那些 xaml 东西的项目在一个共享项目中。不知道会不会有什么不同
希望我理解你的问题!
看这段代码:
[ContentProperty("Source")]
public class ImageSourceExtension : IMarkupExtension
{
public string Source { get; set; }
public object ProvideValue(IServiceProvider serviceProvider)
{
if (Source == null)
{
return null;
}
// Do your translation lookup here, using whatever method you require
var imageSource = ImageSource.FromResource("Project.Images." + Source);
return imageSource;
}
}
现在,如果您想像在 xaml 中那样使用图像,类似的东西应该可以工作:
<Image Source="{extension:ImageSource LogoProject.png}"/>
注意1:我只放了图片的名字,因为在扩展中,路径是自动放的;)
注意 2: 你必须像我下面那样输入 assembly/namespace:
xmlns:extension="clr-namespace:Project.Sources.Extensions;assembly=Project"
此外,您的图像必须是 EmbeddedResource,不要忘记这一点。对于路径,它是 Project.Path.Image.png
而不是汇编 ;)
我希望我理解你的问题,我可以帮助你:)