Xamarin Shell 导航浮出控件选定标签颜色未更改

Posted

技术标签:

【中文标题】Xamarin Shell 导航浮出控件选定标签颜色未更改【英文标题】:Xamarin Shell Navigation Flyout Selected Label Color Not Changing 【发布时间】:2021-11-14 20:07:06 【问题描述】:

这是我在 shell.xaml 中的代码,为弹出项选择的框架颜色对我有用,它的绿色显示良好,但对于所选标签,它与正常相同 弹出标签颜色我不知道我在这里缺少什么

这是用于弹出项目框架

<Style x:Key="FloutItemStyle" TargetType="Frame">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal" />
<VisualState x:Name="Selected">
<VisualState.Setters>
<Setter Property="BackgroundColor" Value="#384a1a"/>                                    
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>

这是标签样式

<Style x:Key="FloutItemStyles" TargetType="Label">
<Setter Property="VisualStateManager.VisualStateGroups">
<VisualStateGroupList>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>                                    
<Setter Property="TextColor" Value="#6b6b6b"/>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="Selected">
<VisualState.Setters>                                    
<Setter Property="TextColor" Value="#fff"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateGroupList>
</Setter>
</Style>

这是我的模板

<Shell.FlyoutHeaderTemplate>
<DataTemplate>
<Grid HeightRequest="110">
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
</Grid.RowDefinitions>
<FlexLayout x:Name="imageHolder" AlignItems="Center" JustifyContent="Center" Padding="20,10" BackgroundColor="#fff">
<Image Source="logo.png" />
<Label TextColor="#6b6b6b" x:Name="UserName"></Label>
</FlexLayout>
</Grid>
</DataTemplate>
</Shell.FlyoutHeaderTemplate>
<Shell.ItemTemplate >
<DataTemplate  >
<Frame Style="StaticResource FloutItemStyle"  Padding="25,5">                
<FlexLayout Margin="0,5" AlignItems="Center" JustifyContent="Start">
<Frame Padding="5" HeightRequest="30"  WidthRequest="30" CornerRadius="100"> <Image Source="Binding FlyoutIcon"
Margin="5"
WidthRequest="30"
HeightRequest="30" />
</Frame>
<Label  Style="StaticResource FloutItemStyles"  Padding="25,0,0,0" 
Text="Binding Title"
FontAttributes="Bold"
FontSize="18"
VerticalTextAlignment="Center" />
</FlexLayout>       
</Frame>
</DataTemplate>
</Shell.ItemTemplate>

【问题讨论】:

【参考方案1】:

我认为这与标签在框架内有关,这导致标签状态不会改变

如果您想在选择时触发多项更改,您可以查看有关 flyout styling 与其他 example 的 Microsoft 文档

这样,当浮出项目被选中时,它会触发您想要的所有更改,通过它们的名称引用元素

【讨论】:

以上是关于Xamarin Shell 导航浮出控件选定标签颜色未更改的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 Xamarin.Forms Shell 顶部选项卡中显示图标?

导航栏下方的 AppShell Flyout 下方

如何使用 tapGesture (Xamarin.Forms) 从应用程序中的多个标签中删除选定的标签

Xamarin.Forms:处理导航工具栏按钮(Shell)

Xamarin.Forms Shell 如何在路由导航中向字符串注入多个不同的值

首次访问后无法导航回 Xamarin Shell 页面