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个颜色要更新,一个标题要更新月/年,等等等等
我真的输了,老实说,我一定知道如何去思考,如何去做。
谢谢你的帮助!
使绑定工作。您的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)));
}