我是Xamarin Forms的新手,并试图在XAML中绑定一个可以为null的属性:
public DateTime? LocalExpiryDate //property on Person class
{
get { return GetValue<DateTime>(); }
set { SetValue(value); }
}
<Label Text="{Binding LocalExpiryDate}"/>
在后面的代码中绑定为:
InitializeComponent();
MainStackLayout.BindingContext = member.Person;
当我尝试在Android模拟器上运行应用程序时,该属性不为null我得到一个错误&#34;调用目标抛出了异常&#34;并深入研究错误我得到一条消息&#34;对象引用未设置为对象的实例&#34;
如果我删除了?要使该属性不可为空,那么只要有属性
,该应用就可以正常工作是否无法绑定到可空属性或是否有办法绕过它?
由于
马克
答案 0 :(得分:2)
据我了解你的问题。我有Page
:
public partial class Page1 : ContentPage
{
private Person _person;
public Person Person
{
get { return _person; }
set
{
_person = value;
OnPropertyChanged();
}
}
public Page1()
{
BindingContext = this;
InitializeComponent();
}
protected override void OnAppearing()
{
Person = new Person() { Date = DateTime.Now };
base.OnAppearing();
}
}
我有Person
:
public class Person : BindableObject
{
private DateTime? _date;
public DateTime? Date
{
get { return _date; }
set
{
_date = value;
OnPropertyChanged();
}
}
}
我有XAML
:
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:CommonSample;assembly=CommonSample"
x:Class="CommonSample.Page1">
<StackLayout>
<Label Text="{Binding Person.Date}"/>
</StackLayout>
</ContentPage>