gpt4 book ai didi

c# - Xamarin.Forms 自定义日期时间 BindableProperty BindingPropertyChangedDelegate

转载 作者:太空宇宙 更新时间:2023-11-03 23:00:30 25 4
gpt4 key购买 nike

我一直在研究 Ed Snider 的书 Mastering Xamarin.Forms。第 71 页指示创建一个类 DatePickerEmtryCell,它继承自 EntryCell。它显示添加以下 DateTime BindableProperty,但此方法现已弃用并生成错误。

public static readonly BindableProperty DateProperty = BindableProperty.Create<DatePickerEntryCell, DateTime>(p =>
p.Date,
DateTime.Now,
propertyChanged: new BindableProperty.BindingPropertyChangedDelegate<DateTime>(DatePropertyChanged));

我认为我在以下方面走在正确的轨道上,但我不确定如何完成它并且完全卡住了:

public static readonly BindableProperty DateProperty =
BindableProperty.Create(nameof(Date), typeof(DateTime), typeof(DatePickerEntryCell), default(DateTime),
BindingMode.TwoWay, null, new BindableProperty.BindingPropertyChangedDelegate(

我以为会是这样

    new BindableProperty.BindingPropertyChangedDelegate(DatePickerEntryCell.DatePropertyChanged), null, null);    

但这是不正确的,还有我尝试过的无数其他排列。我想要一些指导。

干杯

最佳答案

因为 DateProperty 是静态的,propertyChanged 委托(delegate)也应该是静态的。因为它是 BindingPropertyChangedDelegate 类型。你可以这样试试:

public static readonly BindableProperty DateProperty = BindableProperty.Create(
propertyName: nameof(Date),
returnType: typeof(DateTime),
declaringType: typeof(DatePickerEntryCell),
defaultValue: default(DateTime),
defaultBindingMode: BindingMode.TwoWay,
validateValue: null,
propertyChanged: OnDatePropertyChanged);

现在,您应该可以从委托(delegate)访问代表您的 DatePickerEntryCell 元素的 BindableObject。您还可以访问旧/新值。以下是从委托(delegate)中检索控件的方法:

public static void OnDatePropertyChanged(BindableObject bindable, object oldValue, object newValue)
{
var control = bindable as DatePickerEntryCell;
if (control != null){
// do something with this control...
}
}

希望对您有所帮助!

关于c# - Xamarin.Forms 自定义日期时间 BindableProperty BindingPropertyChangedDelegate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43293944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com