Xamarin.UWP 如何更改 TableView TableSection 中的 TextSize 和 Casing

How to change the TextSize and Casing in TableView TableSection in Xamarin.UWP

我有一个 CustomTableView 控件,它是我用 Xamarin TableView 制作的。我使用自定义渲染器更改 Android 和 iOS 的 TextSize 和 Boldness,代码受此 .

启发

我想为 UWP 做同样的事情,但我不知道如何实现。具体来说,我想使 TableSections 中的文本更大,并使该文本也以大写字母开头。任何有关如何实现此目标的想法都将不胜感激。

How to change the TextSize and Casing in TableView TableSection in Xamarin.UWP

请检查此 code line,Xamarin 将 TextBlock 放置在 TableSection DataTemplate 中。如果要编辑属性,可以通过将 DataTemplate 添加到 UWP 项目中的 App.Xaml 文件来实现。如果你想编辑FontSize,你可以使用下面的代码。 (注意FontSize 属性).

<Application.Resources>
    <DataTemplate x:Key="TableSectionOne">
        <TextBlock
            Margin="0,20,0,0"
            FontSize="55"
            Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
            Style="{ThemeResource SubtitleTextBlockStyle}"
            Text="{Binding Title, Converter={StaticResource LowerConverter}}"
            Visibility="{Binding Text, RelativeSource={RelativeSource Mode=Self}, Converter={StaticResource CollapseWhenEmpty}}" />
    </DataTemplate>
</Application.Resources>

在您的 customTableView 的 UWP 渲染器中,您可以像下面那样手动设置 listview.GroupStyle.FirstOrDefault().HeaderTemplate

class CustomTableViewRender : TableViewRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<TableView> e)
    {
        base.OnElementChanged(e);

        if(Control != null)
        {
            var listview = Control as Windows.UI.Xaml.Controls.ListView;
            listview.GroupStyle.FirstOrDefault().HeaderTemplate = (Windows.UI.Xaml.DataTemplate)Windows.UI.Xaml.Application.Current.Resources["TableSectionOne"];
           
        }
    }   
}

不幸的是,TableSection 不支持继承,所以我们不能为它扩展依赖 属性。

至于Title的大小写,只需将TextConverter={StaticResource LowerConverter}去掉,将TableView的大小写为Title即可到一个带有你喜欢的任何大小写的字符串,它不会被转换为小写。所以它最终看起来像这样:

<Application.Resources>
    <DataTemplate x:Key="TableSectionOne">
        <TextBlock
            Margin="0,20,0,0"
            FontSize="55"
            Foreground="{Binding TextColor, Converter={StaticResource ColorConverter}, ConverterParameter=DefaultTextForegroundThemeBrush}"
            Style="{ThemeResource SubtitleTextBlockStyle}"
            Text="{Binding Title}"
            Visibility="{Binding Text, RelativeSource={RelativeSource Mode=Self}, Converter={StaticResource CollapseWhenEmpty}}" />
    </DataTemplate>
</Application.Resources>