Xamarin窗体-标签TextColor不更新绑定

本文关键字:更新 绑定 TextColor 标签 窗体 Xamarin | 更新日期: 2023-09-27 18:14:06

基本上,我有一个Button列表。当你点击其中一个时,它的Label TextColor就会改变。为了做到这一点,我使用{Binding value},然而,它不起作用。我想办个活动,但是…什么也不会发生。我试着直接从标签设置它,它工作了。为什么?

我在c#部分有以下代码:

private Color GroupSuperModLabelColor { get; set; }
private void OnGroupsClicked(object sender, EventArgs ea)
{
    if (GroupSuperModLabelColor == App.NL_White)
        GroupSuperModLabelColor = App.NL_OrangeBeer;
    else
        GroupSuperModLabelColor = App.NL_White;
    this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(GroupSuperModLabelColor)));
    //If I don't add this line, then it doesn't work, WHY?
    GroupLabel.TextColor = GroupSuperModLabelColor;
    Debug.WriteLine("OnGroupsClicked clicked !");
}
这里有XAML部分的声明:
<AbsoluteLayout HeightRequest="{Binding SuperModHeightSize}" WidthRequest="{Binding SuperModWidthSize}">
  <control:CustomLabel x:Name="GroupLabel" Text="Groups" FontFamily="{extension:FontFamily Roboto_Light}" FontSize="20" TextColor="{Binding GroupSuperModLabelColor}"
                       HorizontalTextAlignment="Center" VerticalTextAlignment="Center"
                       AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1"
                       AbsoluteLayout.LayoutFlags="All"/>
  <control:CustomButton BackgroundColor="Transparent" BorderColor="Transparent"
                        Clicked="OnGroupsClicked" LongPress="OnGroupsLongPress"
                        AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1"
                        AbsoluteLayout.LayoutFlags="All"/>
  </AbsoluteLayout>

我的Binding上下文设置为this,其他的Binding都可以工作。只是对于颜色,它似乎不起作用。

为什么?提前致谢

Xamarin窗体-标签TextColor不更新绑定

您的GroupSuperModLabelColor未声明为可绑定属性:https://developer.xamarin.com/guides/xamarin-forms/xaml/bindable-properties/

你必须修改声明