Xamarin.Forms UWP选项卡页面中的选项卡图标?

Xamarin.Forms UWP选项卡页面中的选项卡图标?,xamarin.forms,uwp,xamarin.uwp,tabbedpage,Xamarin.forms,Uwp,Xamarin.uwp,Tabbedpage,在Xamarin.Forms中组合一个选项卡页面时,如何让UWP使用页面的图标属性 如果我正确配置表单属性/文件,就可以了 这是我的标签页XAML。这些图标都是为iOS和Android设置和工作的,甚至UWP中的页面图像也可以很好地呈现(这意味着文件可能正确地存在于项目中) 目前,根本不使用Icon属性,因此获取选项卡图标需要自定义渲染器。即使是官方的UWP样品,实际上似乎也没有烘烤过 and甚至使用Icon属性来调整选项卡UI,但UWP渲染器需要更新才能正常工作。我在这里概述了如何实现这一点

在Xamarin.Forms中组合一个选项卡页面时,如何让UWP使用页面的图标属性

如果我正确配置表单属性/文件,就可以了

这是我的标签页XAML。这些图标都是为iOS和Android设置和工作的,甚至UWP中的页面图像也可以很好地呈现(这意味着文件可能正确地存在于项目中)


目前,根本不使用Icon属性,因此获取选项卡图标需要自定义渲染器。即使是官方的UWP样品,实际上似乎也没有烘烤过


and甚至使用Icon属性来调整选项卡UI,但UWP渲染器需要更新才能正常工作。

我在这里概述了如何实现这一点

简而言之,您需要更改UWP正在使用的默认
HeaderTemplate
。但由于Xamarin表单的启动方式,这并不简单。 因此,您需要将自定义模板注入到资源字典中

示例项目位于Github上

更详细的信息:

您需要提供自己的
选项卡页面样式
,并切换出Xamarin用于其UWP渲染的样式。 因此,新样式包含一个图像,其中我们将源数据绑定到Xamarin图标属性

<Style x:Key="TabbedPageStyle2" TargetType="uwp:FormsPivot">
    <Setter Property="HeaderTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel Orientation="Vertical">
                    <Image Source="{Binding Icon, Converter={StaticResource IconConverter}}" Width="15" Height="15" />
                    <TextBlock Name="TabbedPageHeaderTextBlock" Text="{Binding Title}"
                                Style="{ThemeResource BodyTextBlockStyle}" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>
您还需要一个转换器来确保图像控件理解Xamarin给出的图标源

public class IconConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value != null && value is Xamarin.Forms.FileImageSource)
            return ((Xamarin.Forms.FileImageSource)value).File;

        return null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}

同意,谢谢。不过,我还得再等一个小时。你能直接从外部链接中找到答案吗?看起来图标现在可以在最新的UWP实现中工作,但没有对布局进行太多控制。我认为使用样式替换是关键-例如,您知道如何使用此技术将选项卡移动到底部吗?老实说,我还没有看过新的实现。我想你首先需要弄清楚UWP目标中使用了什么样的控制。有了它,也许你可以找到一种改变布局的方法。。。就像是一个支点控制。
public class IconConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {
        if (value != null && value is Xamarin.Forms.FileImageSource)
            return ((Xamarin.Forms.FileImageSource)value).File;

        return null;
    }

    public object ConvertBack(object value, Type targetType, object parameter, string language)
    {
        throw new NotImplementedException();
    }
}