C# Xamarin表单-标签、颜色和其他属性不';当设置了绑定属性时,不会更新
我来是因为我对装订有点不了解 我在C代码中有这个属性: 然后在XAML部分: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
<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)));
}