0

Xamarin Forms では、バインド可能なプロパティを次のように作成しました。

public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create("SelectedItem", typeof(MyItem), typeof(MyGrid), default(MyItem));

public MyItem SelectedItem
{
     get { return (MyItem)GetValue(SelectedItemProperty); }
     set { SetValue(SelectedItemProperty, value); }
}

ここに私のコンストラクタがあります:

public MyView()
{
     InitializeComponent();

     PropertyChanged += OnPropertyChanged;
}

protected void OnPropertyChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
{
   if (propertyChangedEventArgs.PropertyName == "SelectedItem")
   {
       // called twice
   }
}

プロパティが変更されたイベントが2回発生する理由を誰かが説明できますか? バインド可能なプロパティの定義で変更されたハンドラーを作成すると、ハンドラーはonce呼び出されます。

public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create("SelectedItem", typeof(MyItem), typeof(MyGrid), default(MyItem), null, SelectedItemChanged);

この問題はコード ビハインドにのみ存在することに気付きました。プロパティを XAML で直接設定すると、プロパティ変更イベントが一度発生します。

4

1 に答える 1