【问题标题】:Can't show the icon for a button in Toolbar Items with UWP无法使用 UWP 在工具栏项中显示按钮的图标
【发布时间】:2020-01-02 02:28:43
【问题描述】:

我正在开发适用于 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 中,即使我可以点击按钮,我也看不到图标。

我哪里做错了?

【问题讨论】:

  • 嗨莱昂纳多。欢迎来到 Stack Overflow,感谢您提出问题!您能否添加 Android 和 UWP 应用的屏幕截图以进一步说明该问题?

标签: c# xaml xamarin.forms uwp


【解决方案1】:

我可以确认,虽然 UWP 可以在 Image 元素中显示 .ico 文件,但它不适用于 Xamarin.Forms 在下面用于 ToolbarItemBitmapIcon。因此,很遗憾,您将无法在 UWP 上使用这个文件。但是,您可以将您的图标转换为 .png 图像,并且该图像将毫无问题地显示在所有平台上。

【讨论】:

  • 我尝试使用 .png 文件而不是 .ico 文件,但它仍然只显示在 Android 上而不是 UWP 上
【解决方案2】:

我找到了解决方案,写给需要的人:

需要根据操作系统目标的类型来定义图标的路径以进行编译。

对于 Android,我必须将图像复制到所有“drawable ...”文件夹并将其编译属性设置为“AndroidResource”。

对于 UWP,我必须将 png 文件复制到 Assets 文件夹,然后将其编译属性设置为“内容”。

最后,您必须在 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>

【讨论】:

    【解决方案3】:

    更改下面的代码并将.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 文件:

    我的结果:

    【讨论】:

    • 如果我尝试使用您的方法,我在工具栏项目中没有任何按钮图标。无论是在 UWP 中,还是在 Android 中。即使我将 .ico 文件转换为 .png
    • 有趣,由于某种原因,当我使用 .ico 文件时,我尝试过的图标没有出现在纯 UWP 应用程序上。很惊讶它确实在 Xamarin.Forms 中工作:-O
    猜你喜欢
    • 1970-01-01
    • 2021-08-24
    • 2014-05-02
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    相关资源
    最近更新 更多