我正在尝试学习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}"
)的情况下绑定到集合或我想要在集合中显示的值?我该如何解决这个问题或改变我的实现是否正确?
谢谢,
答案 0 :(得分:0)
在MyModelClass上添加一个名为“SelectedData”的属性或类似的东西。 然后将该属性绑定到ComboBox的SelectedItem属性