Xamarin窗体-标签,颜色和其他属性不更新,当他们的绑定属性设置

本文关键字:属性 更新 他们的 设置 绑定 其他 窗体 标签 颜色 Xamarin | 更新日期: 2023-09-27 17:53:47

我来了,因为我不明白绑定的一些事情。

我在c#代码中有这个属性:

public string MyText { get; set; }

,然后在XAML部分:

<Label Text="{Binding MyText}"/>

第一次工作,但如果我改变MyText字符串,那么<Label/>不更新..

我也看到了一些关于它的帖子,人们谈论INotifyChange或类似的东西,这个绑定是如何工作的?为什么更新不是恒定的,为什么它不总是一样的工作?

问题是我的项目有点复杂。我有一个customCalendar我自己做的,这是一个网格"再次绑定自己"到DayCase[6][7],如Windows日历,显示是相同的。

所以我的问题是双重的,我需要一个函数的属性"",如果其中一个改变?因为在这个例子中,我只讲了一个标签,但我有1个标签按DayCase, 3个颜色要更新,一个标题要更新月/年,等等等等

我真的输了,老实说,我一定知道如何去思考,如何去做。

谢谢你的帮助!

Xamarin窗体-标签,颜色和其他属性不更新,当他们的绑定属性设置

使绑定工作。您的ViewModel需要实现INotifyPropertyChanged,它有一个处理程序public event PropertyChangedEventHandler PropertyChanged, Xamarin。窗体的绑定系统,并为它创建一个调用器:

protected virtual void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            var eventHandler = PropertyChanged;
            eventHandler?.Invoke(this, e);
        }

之后,像这样写要绑定的属性:

private string _myText;
    public string MyText
    {
        get { return _myText; }
        set
        {
            if (_myText != value)
            {
                _myText = value;
                OnPropertyChanged(new PropertyChangedEventArgs(nameof(MyText)));
            }
        }
    }

详情请参阅https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/

此外,还有其他MVVM框架(MvvmCross, MVVM Light等)或Xamarin.Forms.Lab已经为您做了一些工作。

对于customCalendar问题,因为要让绑定工作是调用PropertyChanged事件,您可以编写一个方法来处理这个问题,如

public void UpdateDayCase(int i, int j, DayCase)
{
    this.DayCases[i][j] = DayCase;
    OnPropertyChanged(new PropertyChangedEventArgs(nameof(DayCases)));
}