在 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
}
}
有人可以解释为什么属性更改事件会触发两次吗?如果我在可绑定属性的定义中创建了一个更改的处理程序,那么该处理程序将被调用一次。
public static readonly BindableProperty SelectedItemProperty = BindableProperty.Create("SelectedItem", typeof(MyItem), typeof(MyGrid), default(MyItem), null, SelectedItemChanged);
我注意到这个问题只存在于代码隐藏中。如果我直接在 XAML 中设置属性,属性更改事件会触发一次。