我有一个包含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;
}
}