TextCellRenderer в Xamarin.UWP

Как мы можем установить высоту TextCell с отступом / полем в Windows Universal Project, используя Xamarin.Forms?

Я попробовал следующий пользовательский рендер в родном проекте:

class CustomTextCellRenderer : TextCellRenderer
{
    public override Windows.UI.Xaml.DataTemplate GetTemplate(Cell cell)
    {
        var d = base.GetTemplate(cell);
        //Set something here???
        return d;
    }
}

но не удалось найти какое-либо свойство для установки.

Есть функция для установки свойства зависимости DataTemplate но я не могу понять, каким будет имя свойства зависимости для высоты, которую нужно установить?

d.SetValue(???DependencyProperty???, value);

1 ответ

Решение

Поскольку TextCell является встроенной ячейкой, он оптимизирован и предназначен для использования как есть. Однако вы можете создать собственный DataTemplate на основе шаблона TextCell и вернуть его вместо этого.

Вы можете найти оригинальный шаблон в источнике Xamarin.Forms. Затем в проекте платформы UWP App.xamlОпределите ваш новый DataTemplate внутри ResourceDictionary с другим ключом:

<DataTemplate x:Key="MyTextCell">
    <StackPanel Background="Aqua">
        <TextBlock
            Padding="0 10 0 10"
            Margin="5"
            Text="{Binding Text}"
            Style="{ThemeResource BaseTextBlockStyle}" />

        <TextBlock
            Text="{Binding Detail}"
            Style="{ThemeResource BodyTextBlockStyle}"
            x:Name="detail"/>
    </StackPanel>
</DataTemplate>

и получить доступ к нему внутри пользовательского рендера с помощью:

return App.Current.Resources["MyTextCell"] as Windows.UI.Xaml.DataTemplate;
Другие вопросы по тегам