作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在我的 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/
我是一名优秀的程序员,十分优秀!