Xamarin使用ListView检测页面上的控件使用情况

时间:2017-12-05 17:41:15

标签: c# listview xamarin user-input inotifypropertychanged

我有一个包含listview的内容页面。每个列表项由视图,视图模型和模型组成。我可以通过查看绑定到视图的模型属性的属性更改事件来检测viewmodel上的更改。 但是当属性的值不是默认值(初始化时的值)时,当页面出现时,将为每个属性调用属性更改事件。

但实际上我只想通过视图跟踪用户输入的更改(例如,更改文本框中的文本)。

场景的伪代码:

public class CoolViewModel : BindableBase
{
    private ObservableCollection<Model> modelItems;
    public ObservableCollection<Model> ModelItems
    {
        get { return modelItems; }
        set { SetProperty(ref modelItems, value); }
    }


    public CoolViewModel()
    {
        //To track changes in the model
        foreach (var model in ModelItems)
        {
            model.PropertyChanged += Model_PropertyChanged;
        }
    }

    //sadly, this is invoked for each property that has a non-default value
    //quickly after this viewmodel is initialized
    private void Model_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        UserDidInput = true;
    }
}

0 个答案:

没有答案