C# Xamarin表单-标签、颜色和其他属性不';当设置了绑定属性时,不会更新

C# Xamarin表单-标签、颜色和其他属性不';当设置了绑定属性时,不会更新,c#,xaml,binding,xamarin.forms,updates,C#,Xaml,Binding,Xamarin.forms,Updates,我来是因为我对装订有点不了解 我在C代码中有这个属性: 然后在XAML部分: <Label Text="{Binding MyText}"/> 第一次工作时,如果我更改MyText字符串,则不会更新 我还看到了一些关于它的帖子,人们谈论INotifyChange之类的东西,这个绑定是如何工作的?为什么更新不是固定不变的,为什么不总是一样的 问题是我的项目有点复杂。我有一个我自己制作的自定义日历,它是一个网格“再次由我自己绑定”到一个DayCase[6][7],例如Windows

我来是因为我对装订有点不了解

我在C代码中有这个属性:

然后在XAML部分:

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

第一次工作时,如果我更改
MyText
字符串,则
不会更新

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

问题是我的项目有点复杂。我有一个我自己制作的自定义日历,它是一个网格“再次由我自己绑定”到一个
DayCase[6][7]
,例如Windows日历,显示是相同的

所以我的问题是双重的,如果其中一个发生了变化,我是否需要1个属性函数来“监听”呢?因为在这个例子中,我只提到一个标签,但是我有一个DayCase标签,三种颜色要更新,一个带有月份/年份的标题要更新,等等

老实说,我真的输了,我肯定知道如何思考,如何成功


谢谢你的帮助

使装订工作正常。您的ViewModel需要实现
INotifyPropertyChanged
,它有一个处理程序
public event PropertyChangedEventHandler PropertyChanged
,Xamarin.Forms的绑定系统要与之连接,并为其创建一个调用程序:

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)));
            }
        }
    }
详情请参阅

此外,还有其他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)));
}

哇,你的答案太完美了!一切正常,很抱歉,我没有看到你的编辑,这很有趣,但我已经自己做了一些东西:)谢谢你;)然而,这种复制有点无聊,但它是有效的,这是主要目标;)
public void UpdateDayCase(int i, int j, DayCase)
{
    this.DayCases[i][j] = DayCase;
    OnPropertyChanged(new PropertyChangedEventArgs(nameof(DayCases)));
}