#c# #xamarin #xamarin.forms #flyout #xamarin-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:
Я думаю, что это связано с тем, что метка находится внутри рамки, и это приводит к тому, что состояние метки не меняется
Если вы хотите инициировать несколько изменений при выборе, вы можете проверить документацию Microsoft о стиле всплывающего окна в сочетании с этим другим примером
Таким образом, когда выбирается всплывающий элемент, он инициирует все изменения, которые вы хотите, ссылаясь на элемент по их имени