【问题标题】:Xamarin Forms Shell ItemTemplate StyleXamarin Forms Shell ItemTemplate 样式
【发布时间】:2020-10-26 13:34:25
【问题描述】:

如何更改 FlyoutItem 网格内的标签颜色? 在上面的代码中,我尝试在选择特定菜单项时更改网格的背景颜色和标签的字体颜色。网格的背景发生变化。但字体颜色没有。 风格:

<Shell.Resources>
    <Style x:Key="FloutItemStyle" TargetType="Grid">
        <Setter Property="VisualStateManager.VisualStateGroups">
            <VisualStateGroupList>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal">
                        <VisualState.Setters>
                            <Setter Property="BackgroundColor" Value="Orange"/>
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Selected">
                        <VisualState.Setters>
                            <Setter Property="BackgroundColor" Value="DarkOrange"/>
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateGroupList>
        </Setter>
    </Style>
    <Style x:Key="FlyoutLabelStyle" TargetType="Label">
        <Setter Property="VisualStateManager.VisualStateGroups">
            <VisualStateGroupList>
                <VisualStateGroup>
                    <VisualState x:Name="Normal">
                        <VisualState.Setters>
                            <Setter Property="TextColor" Value="Black"/>
                        </VisualState.Setters>
                    </VisualState>
                    <VisualState x:Name="Selected">
                        <VisualState.Setters>
                            <Setter Property="TextColor" Value="DarkGray"/>
                        </VisualState.Setters>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateGroupList>
        </Setter>
    </Style>
</Shell.Resources>

外壳项目模板:

<DataTemplate >
        <Grid Style="{StaticResource FloutItemStyle}">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="0.2*" />
                <ColumnDefinition Width="0.8*" />
            </Grid.ColumnDefinitions>
            <Image Source="{Binding FlyoutIcon}"
                Margin="5"
                HeightRequest="45" />
            <Label Style="{StaticResource FlyoutLabelStyle}" 
                Grid.Column="1"
                FontSize="Large"
                Text="{Binding Title}"
                FontAttributes="Bold"
                VerticalTextAlignment="Center" />
        </Grid>
    </DataTemplate>

【问题讨论】:

    标签: c# xamarin.forms


    【解决方案1】:

    您可以尝试使用触发器。

     <Label Grid.Column="1"
                           TextColor="Black"
                           Text="{Binding Title}"
                           FontAttributes="Italic"
                           VerticalTextAlignment="Center" >
                    <Label.Triggers>
                        <DataTrigger TargetType="Label" Binding="{Binding Source={x:Reference grid},Path=BackgroundColor}" Value="Accent">
                            <Setter Property="TextColor" Value="White"/>
                        </DataTrigger>
                    </Label.Triggers>
                </Label>
    

    for reference

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 2020-12-09
      • 2020-10-18
      • 2020-04-21
      相关资源
      最近更新 更多