gpt4 book ai didi

xamarin.forms - 如何在 Xamarin Shell MenuItem 中添加开关

转载 作者:行者123 更新时间:2023-12-05 03:00:28 25 4
gpt4 key购买 nike

我想在我的 AppShell.xaml 的 menuItem 中有一个开关(除了通常的文本和图标)。如何在保持 MenuItem 样式的同时做到这一点?

我在 MenuItem 的 Shell.MenuItemTemplate 中使用了 DataTemplate,但结果很丑,因为 MenuItem 的所有样式都丢失了。以这种方式创建的 MenuItem 与 Shell 的其他 FlyoutItems 和 MenuItem 没有相同的字体、文本颜色和字体大小。

<MenuItem Text="MyMenuItem" Command="{Binding SwitchMode}">
<Shell.MenuItemTemplate>
<DataTemplate>
<StackLayout Orientation="Horizontal" HorizontalOptions="Center">
<Label Text="{Binding Text}"/>
<Switch IsToggled="{Binding IsModeActivated}"/>
</StackLayout>
</DataTemplate>
</Shell.MenuItemTemplate>

最佳答案

引用 Resources 中定义的 DataTemplate 使用元素 Shell.MenuItemTemplate

公共(public)/共享元素属性值可以在 "BaseStyle" 中定义,而菜单特定属性可以在基于 "BaseStyle" 的样式中定义:

<Shell.Resources>
...
<Style x:Key="labelBaseStyle" TargetType="Label">
<Setter Property="VerticalTextAlignment" Value="Center" />
</Style>

<Style x:Key="firstMenuLabelStyle" TargetType="Label" BasedOn="{StaticResource labelBaseStyle}">
<Setter Property="FontAttributes" Value="Italic" />
</Style>

<Style x:Key="menuLabelStyle" TargetType="Label" BasedOn="{StaticResource labelBaseStyle}">
<Setter Property="FontAttributes" Value="Bold" />
</Style>

<DataTemplate x:Key="firstMenuItemTemplate">
<StackLayout ...
<Label Style="{StaticResource firstMenuLabelStyle}" ...
</DataTemplate>

<DataTemplate x:Key="menuItemTemplate">
<StackLayout ...
<Label Style="{StaticResource menuLabelStyle}" ...
</DataTemplate>
...
</Shell.Resources>
...
<MenuItem Text="MenuItem1" Shell.MenuItemTemplate="{StaticResource firstMenuItemTemplate}" />

<MenuItem Text="MenuItem2" Shell.MenuItemTemplate="{StaticResource menuItemTemplate}" />

关于xamarin.forms - 如何在 Xamarin Shell MenuItem 中添加开关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56777585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com