XamarinFormsのデータバインディングがうまくいきません。
下記のリンク先の情報をもとにXamarinFormsにてデータバインディングをしようとしています。
こちら
以下のようにINotifyPropertyChangedを派生したクラスを生成しました。
lang
1public class CClass : INotifyPropertyChanged 2 { 3 // INotifyPropertyChangedインターフェイスの実装 4 public event PropertyChangedEventHandler PropertyChanged = delegate { }; 5 6 // Fields 7 int count; 8 9 // コンストラクタ 10 public CClass() 11 { 12 count = 0; 13 time = 0; 14 } 15 16 // Properties 17 public int Counter 18 { 19 get 20 { 21 return this.count; 22 } 23 set 24 { 25 if (this.count != value) 26 { 27 this.count = value; 28 PropertyChanged(this, new PropertyChangedEventArgs("Counter")); 29 //OnPropertyChanged("Counter"); 30 31 } 32 } 33 } 34 35 // プロパティ値の変更を通知します 36 protected virtual void OnPropertyChanged(string propertyName) 37 { 38 PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 39 } 40 }' 41 42
次に、xamlにて、データバインディングされるようにラベルを以下のように定義しました。
lang
1 <Label Text="{Binding Counter, Mode = TwoWay, StringFormat='{0}'}" 2 x:name="CountLabel" 3 BackgroundColor="Aqua" 4 HorizontalTextAlignment="Start" 5 VerticalTextAlignment="Center"/>
ボタンが押された後にCounterプロパティを1秒ごとにインクリメントするようなコードにしているのですが
画面のLabel値が更新されません。
デバッグでソースを追ったところ、Counterの値は更新されていますし、描画の更新には
Device.BeginInvokeOnMainThreadを使用しているので問題ありません。
※コード上でCountLabel.Textの値を更新した場合は反映されていました。
何が原因と考えられますでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/09 23:39
2017/06/10 02:01
2017/06/11 09:31
2017/06/11 09:40
2017/06/11 10:03
2017/06/11 17:55
2017/06/11 18:50
2017/06/12 14:15