我想了解WPF中的MVVM模式,並且遇到了綁定和集合的一些問題。我不喜歡綁定到集合的索引,因爲集合更改。如何綁定到集合而不使用集合的索引?
我MyModelClass : ObservableCollection<MyData>
的MyData
類有一個名爲它DataValue
握着我的自定義信息屬性。我用MyData
對象填充MyModelClass
。在視圖模型類(MyViewModel
)中,我有一個MyModelClass
類型的屬性CurrentData
。
現在在這種情況下,我的綁定是一個組合框。 下面是綁定的樣子:
<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}"
)?我該如何解決這個問題或者改變我的實施方案是否正確?
感謝,
爲什麼當您只需要集合中的一個項目時實現集合類型?如果你想要當前項目,你需要另一個屬性,指向當前項目 – Charleh 2012-07-05 15:27:54
我同意這也讓我感到困惑,但那是我遇到的另一個問題,當屬性發生變化時,我無法獲得綁定更新,除非它是在一個集合中。但是,這是與這個問題分開的問題。 – therealjohn 2012-07-05 15:44:41