Xamarin.Forms UWP选项卡页面中的选项卡图标?
在Xamarin.Forms中组合一个选项卡页面时,如何让UWP使用页面的图标属性 如果我正确配置表单属性/文件,就可以了 这是我的标签页XAML。这些图标都是为iOS和Android设置和工作的,甚至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渲染器需要更新才能正常工作。我在这里概述了如何实现这一点
目前,根本不使用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();
}
}