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 顶部选项卡中显示图标?
如何使用 tapGesture (Xamarin.Forms) 从应用程序中的多个标签中删除选定的标签
Xamarin.Forms:处理导航工具栏按钮(Shell)