我正在尝试学习 WPF 中的 MVVM 模式,并且遇到了绑定和集合的一些问题。我不喜欢绑定到集合的索引,因为集合发生了变化。
我有MyModelClass : ObservableCollection<MyData>
该类MyData
有一个调用属性DataValue
来保存我的自定义信息。MyModelClass
我用MyData
对象填充。在视图模型类 ( MyViewModel
) 我有一个CurrentData
类型的属性MyModelClass
。
现在在这种情况下,我的绑定是一个组合框。这是绑定的样子:
<ComboBox Name="cmbxData"
ItemsSource="{Binding Path=CurrentData}"
DisplayMemberPath="DataValue"
SelectedValuePath="DataValue"
SelectedValue="{Binding Path=CurrentData[0].DataValue}"/>
这一切都很好,并且MyViewModel
该类具有 PropertyChanged 通知的接口设置。我需要每隔几秒钟刷新一次保存的信息。
我正在通过在以下内容中执行以下操作来刷新集合MyModelClass
:
public Class MyModelClass : ObservableCollection<MyData>
{
private static MyModelClass current = null;
public static MyModelClass Current
{
get
{
if(current == null)
current = new MyModelClass();
return current;
}
}
private void UpdateModel(MyData newData)
{
MyModelClass newModel = new MyModelClass();
newModel.Add(newData);
current = newModel;
}
}
里面MyViewModel
是这样的:
MyModelClass CurrentData = MyModelClass.Current;
我尽我所能提供尽可能多的代码并保持简单。请让我知道是否需要进一步澄清。感谢您就如何解决我的问题提出任何建议。
如果您错过了: 问题:如何绑定到集合,或者我想在集合中显示的值,而不使用上面显示的索引(SelectedValue="{Binding Path=CurrentData[0].DataValue}"
)?我该如何解决这个问题或将我的实现更改为正确?
谢谢,