#c# #xaml #xamarin #xamarin.android #custom-renderer
#c# #xaml #xamarin #xamarin.android #пользовательская визуализация
Вопрос:
Я хотел бы настроить внешний вид всплывающего окна моего приложения оболочки Xamarin таким образом, чтобы его элементы располагались по вертикали. В документах Microsoft показано, как настроить некоторые аспекты самого всплывающего окна, но эти настройки не могут управлять его внешним видом, чтобы я мог изменить способ отображения элементов.
Без заголовка всплывающего окна элементы располагаются поверх всплывающего окна, но мне нужно центрировать их вертикально в середине самого всплывающего окна.
Мой ShellItemRenderer.cs
в настоящее время пуст, потому что я не понимаю, что мне нужно делать. В настоящее время у меня есть эти классы:
internal class CustomShellRenderer : ShellRenderer {
public CustomShellRenderer(Context context) : base(context) { }
protected override IShellTabLayoutAppearanceTracker CreateTabLayoutAppearanceTracker(ShellSection shellSection) {
return new TabLayoutAppearanceTracker(this);
}
protected override IShellItemRenderer CreateShellItemRenderer(ShellItem shellItem) {
return new CustomShellItemRenderer(this);
}
}
public class CustomShellItemRenderer :ShellItemRenderer {
public CustomShellItemRenderer(IShellContext shellContext) : base(shellContext) { }
}
Как вы можете видеть, они пусты, так как я не могу понять, какие изменения необходимо внести.
Ответ №1:
Вы можете использовать оболочку.ItemTemplate для настройки всплывающих элементов:
<Shell.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.2*" />
<ColumnDefinition Width="0.8*" />
</Grid.ColumnDefinitions>
<Image Source="{Binding Icon}"
Margin="5"
HeightRequest="45" />
<Label Grid.Column="1"
Text="{Binding Title}"
FontAttributes="Italic"
HorizontalTextAlignment="Center"
VerticalTextAlignment="Center" />
</Grid>
</DataTemplate>
</Shell.ItemTemplate>
Вот результат:
Вы также можете использовать оболочку.MenuItemTemplate для настройки внешнего вида MenuItem.
Комментарии:
1. Этот метод предназначен для стилизации элементов: мне нужно настроить сам всплывающий окно.
2. Что вы имеете в виду
customize the flyout itself
? Не могли бы вы добавить картинку, чтобы было понятно? Вы можете настроить всплывающее окно в ItemTemplate и добавить туда элемент, который вы хотите.3. @Pine Code хочет центрировать всплывающие элементы вертикально, а не горизонтально: «Мне нужно центрировать их вертикально в середине самого всплывающего окна».
4. @JackHua-MSFT да, вертикально.