Xamarin ListView BindingContext项更改时的事件

时间:2016-12-01 14:33:11

标签: xamarin xamarin.forms

当绑定到Xamarin Forms列表视图的集合中的项目发生更改时,是否可以获取事件? 例如,我的对象有一个Date字段,它绑定到ViewCell中的标签。我希望在更改日期时触发事件。我们的对象实现了INotifyPropertyChanged,因此listview可以正确更新。 我可以手动订阅每个项目的OnPropertyChanged事件,但我希望它们更简单。

感谢。

1 个答案:

答案 0 :(得分:0)

Xamarin.Forms中有触发器。看起来事件触发器可以满足您的需求。例如:

<EventTrigger Event="TextChanged">
    <local:NumericValidationTriggerAction />
</EventTrigger>

public class NumericValidationTriggerAction : TriggerAction<Entry>
{
    protected override void Invoke (Entry entry)
    {
        double result;
        bool isValid = Double.TryParse (entry.Text, out result);
        entry.TextColor = isValid ? Color.Default : Color.Red;
    }
}

您可以找到有关触发器here

的更多信息

从列表视图中选择对象时,请参阅此示例以删除对象。

private MyItemsViewModel _myItemsViewModel;

private void MyItemsListView_ItemSelected(object sender,    SelectedItemChangedEventArgs e)
{
    MyItem item = (MyItem)e.SelectedItem;

    if (item == null)
        return;

    // remove the item from the ObservableCollection
    _myItemsViewModel.Items.Remove(item);
}