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;