【发布时间】:2017-09-27 13:04:05
【问题描述】:
在多个Views 上,我有TimePickers,我想将其设置为某个时间,但它们总是显示00:00。
它们是这样设置的:
<controls:ExtendedTimePicker VerticalOptions="FillAndExpand"
HorizontalOptions="EndAndExpand"
TextColor="#FFFFFF"
Time="{Binding SaveTime, Mode=TwoWay}" />
或者像这样:
<TimePicker Grid.Row="1"
Grid.Column="1"
Format="HHmm"
Time="{Binding SaveTime, Mode=TwoWay}"
BackgroundColor="#FFFFFF" />
为了澄清,ExtendedTimePicker 来自Xlabs.Forms 库。因为它继承自TimePicker,所以它也有同样的问题。我也尝试了所有的绑定模式,但都得到了与00:00相同的结果。
在我的ViewModels 中,我尝试在构造函数中设置绑定属性,将其延迟几百毫秒,或者在收到来自MessagingCenter 的特定消息时设置它。无论何时设置,显示的时间都不会改变。不过,在我将属性设置为某个时间后,将访问绑定属性的 getter。
属性定义为:
private TimeSpan _SaveTime;
public TimeSpan SaveTime
{
get { return _SaveTime; }
set { SetProperty(ref _SaveTime, value); }
}
SetProperty 导致:
public abstract class ViewModelBase : IViewModel, IDisposable
{
protected virtual bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
{
if (object.Equals(storage, value)) return false;
storage = value;
OnPropertyChanged(propertyName);
return true;
}
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var eventHandler = PropertyChanged;
if (eventHandler != null)
{
eventHandler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
那么,这是一个错误吗?有什么可以解决的吗?一种解决方法?某物?也许是更新?
我正在与:
VisualStudio 2017 15.2
Xamarin 4.5.0
Xamarin.Forms 2.3.4.267
【问题讨论】:
标签: c# xamarin xamarin.forms