Xamarin表单Nullable属性 - 未将对象引用设置为对象的实例

时间:2016-07-01 17:25:57

标签: c# xamarin xamarin.forms

我是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;

如果我删除了?要使该属性不可为空,那么只要有属性

,该应用就可以正常工作

是否无法绑定到可空属性或是否有办法绕过它?

由于

马克

1 个答案:

答案 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>