如何在不使用集合索引的情况下绑定到集合?

时间:2012-07-05 15:22:29

标签: c# wpf binding collections

我正在尝试学习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}")的情况下绑定到集合或我想要在集合中显示的值?我该如何解决这个问题或改变我的实现是否正确?

谢谢,

1 个答案:

答案 0 :(得分:0)

在MyModelClass上添加一个名为“SelectedData”的属性或类似的东西。 然后将该属性绑定到ComboBox的SelectedItem属性