2016-07-01 10 views
2

のインスタンスに設定されていない私はXamarinフォームに新たなんだとXAMLでNULL可能プロパティをバインドしようとしている:XamarinがNULL可能プロパティをフォーム - オブジェクト参照オブジェクト

public DateTime? LocalExpiryDate //property on Person class 
    { 
     get { return GetValue<DateTime>(); } 
     set { SetValue(value); } 
    } 

<Label Text="{Binding LocalExpiryDate}"/> 

として背後にあるコードでバインディング:私はエラーIにダウンしてみて、私は「呼び出しのターゲットが例外をスローしました」エラーが出るのAndroidエミュレータ上でアプリケーションを実行し、掘削時に

InitializeComponent(); 
MainStackLayout.BindingContext = member.Person; 

は、プロパティがnullでないにもかかわらず、 「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示される

?プロパティがnullableでないようにするには、プロパティがある限り、アプリケーションは正常に動作します。

null可能なプロパティにバインドすることはできませんか?

おかげ

マーク

+0

です 'あなたのコントロールの' BindableProperty'をLocalExpiryDate'? –

+0

私はかなり理解していません - 私は

+0

あなたは 'LocalExpiryDate'をどこで宣言したのでしょうか? –

答えて

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(); 
    } 
} 

I持って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> 
+0

それはすばらしく、BindableObjectが機能しました。 PersonはBreeze.Sharp.BaseEntityとマークされてBreeze Sharpで使用されましたが、BindableObjectに変更すると修正されました – Mark

関連する問題