使用UWP无法在工具栏项中显示按钮的图标

时间:2019-08-28 20:21:06

标签: c# xaml xamarin.forms uwp

我正在为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中,即使单击按钮,也看不到图标。

我哪里出错了?

3 个答案:

答案 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文件“属性”>“构建操作”设置为“内容”。 enter image description here

更改:

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文件:

enter image description here

我的结果:

enter image description here