我是MVVM的新手,在這裏我有點頭痛。英語不是我的首選語言,請耐心等待。MVVM的新手WPF,從外部源獲取數據
我正在嘗試爲PLC製作HMI。我應該連接到兩個不同的PLC,並在PLC中顯示來自不同數據塊的數據。爲了簡單起見,我們只討論只連接到一個PLC,並且只從一個數據塊獲取數據。數據塊有一個重複的數據結構,在我的解決方案中,我將每個結構變成一個對象。
對於與PLC的通信,我使用Libnodave。適用於MVVM的MVVM Light。
型號。
包含PLC結構的「配方」。它還包括get-set-methods。
int _startByte;
string _name;
int _value1;
bool value2;
ViewModel。
來自ViewModelBase的Iherits,並且有一個Model對象作爲成員。公共get-set-methods,在集合上引發propertychanged。 實例:
Public ViewModel(string name, int startByte)
{
_model = new Model{Name = name, StartByte = startByte};
}
public int Value
{
get{return _model.Value;}
set
{
if(_model.Value!=value)
{
_model.Value=value;
RaisePropertyChanged("Value");
}
}
}
CollectionViewModel。
ObservableCollection of ViewModels。從ModelData.cs獲取模型名稱和起始字節(一個具有兩個數組的類,名稱和startbyte)。使用RelayCommands我已經測試了將ViewModel添加到集合中。
查看。
工程現在,並且有希望工作以後還有
我的計劃看起來有點像這樣:
View
CollectionViewModel
ViewModel ModelData
Model
(視圖模型和ModelData不知道對方)
所以,收集數據。 我的計劃是讓ViewModel引用一個PLC對象(這是Libnodave的地方),並使用PLC對象方法收集數據。 PLC對象表示與PLC的連接,幷包含寫入和讀取數據的方法。在ViewModel中,我將使用PLC對象方法來收集數據(並寫入數據)。
這意味着很多PLC參考,但鎖定將有望防止崩潰。我的問題是我無法弄清楚如何賦予ViewModel一個PLC對象的引用。 PLC對象也將被其他ViewModel使用,並且會有兩個不同的PLS對象,每個PLC對應一個對象。
這是一種有效的方法,還是應該尋找完全不同的東西?