0

我正在尝试学习 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}")?我该如何解决这个问题或将我的实现更改为正确?

谢谢,

4

1 回答 1

0

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

于 2012-07-05T15:27:31.427 回答