我正在为UWP和Android平台开发一个应用程序。我想在导航工具栏中为按钮设置图标。这是我在XAML中的代码:
<ContentPage.ToolbarItems>
<ToolbarItem x:Name="btnAbout" Text="ABOUT" Order="Primary" Clicked="OnNextPageButtonClicked"/>
</ContentPage.ToolbarItems>
这是相关的.cs文件中的代码:
protected override void OnAppearing()
{
base.OnAppearing();
btnAbout.IconImageSource = ImageSource.FromResource("Monk.about.ico");
}
在Android上一切正常,但是在UWP中,即使单击按钮,也看不到图标。
我哪里出错了?
答案 0 :(得分:1)
我可以确认,虽然UWP可以在.ico
元素中显示Image
文件,但是它不适用于BitmapIcon
,Xamarin.Forms在{{1} }。因此,很遗憾,您将无法在UWP上使用此文件。但是,您可以将图标转换为ToolbarItem
图像,该图像将在所有平台上显示而不会出现问题。
答案 1 :(得分:1)
我找到了解决方案,我为需要它的人写了它:
有必要根据要编译的操作系统目标的类型来定义图标的路径。
对于Android,我必须将图像复制到所有“ drawable ...”文件夹,并将其编译属性设置为“ AndroidResource”。
对于UWP,我必须将png文件复制到Assets文件夹,然后将其编译属性设置为“ Content”。
最后,您必须在XAML文件中根据编译类型指示要使用的路径。代码如下:
<ContentPage.ToolbarItems>
<ToolbarItem Text="ABOUT" Clicked="OnNextPageButtonClicked" Priority="0">
<ToolbarItem.IconImageSource>
<OnPlatform x:TypeArguments="FileImageSource">
<On Platform="Android">info</On>
<On Platform="UWP">Assets/info.png</On>
</OnPlatform>
</ToolbarItem.IconImageSource>
</ToolbarItem>
</ContentPage.ToolbarItems>
答案 2 :(得分:0)
更改以下代码,然后将.ico文件“属性”>“构建操作”设置为“内容”。
更改:
btnAbout.IconImageSource = ImageSource.FromResource("Monk.about.ico");
收件人:
btnAbout.IconImageSource = ImageSource.FromFile("Monk.about.ico");
或者您可以在XAML中设置IconImageSource。
<ContentPage.ToolbarItems>
<ToolbarItem Order="Primary"
Text="Icon Item"
Priority="0"
IconImageSource="Monk.about.ico"
Clicked="OnItemClicked" />
我的.ico文件:
我的结果: