2010-06-08 98 views
2

這可能是一個簡單的問題,增加新的項目,以收集...WPF綁定的收集和使用MVVM

我有員工的列表框和文本框的顯示或輸入數據的#的窗口。員工列表框綁定到我的ViewModel中的可觀察集合,該集合從數據庫中讀取。

現在我擁有一個文本框綁定的SelectedEmployee屬性,因此如果用戶單擊現有員工,它將顯示現有屬性。

現在我想從輸入到文本框中的值中添加一個新員工。我的想法是用戶將輸入值,然後單擊「添加員工」。

但我很困惑,什麼文本框將被綁定。我還沒有員工對象,並顯示我需要綁定到SelectedEmployee的現有員工。

我想過改變用戶需要點擊「添加新員工」的工作流程輸入數據並點擊「保存」,但我想我遇到了同樣的問題。

我想我錯過了一些明顯的東西,或者我的ViewModel不正確,以支持我的工作流程。

有什麼建議嗎?

感謝

+1

其實使用「添加新員工」和「保存」。按鈕,我認爲會工作,但它似乎只是一個簡單的工作流程單擊「添加」應該工作。 – 2010-06-08 18:36:37

回答

1

我建議點擊「添加員工」的新員工對象被創建並分配給SelectedEmployee。

現在我想到了,也許最好是創建一個員工對象,將其添加到您的集合中,並將SelectedEmployee指向新創建的對象。

+0

您是否希望他將一個空的員工對象添加到集合或從文本框數據創建的對象?後者將需要他通過名稱或至少訪問UI對象屬性來獲取使用顯式觸發器的更新,這又需要用於綁定表達式的UI對象。前者毫無意義。 – Amsakanna 2010-06-10 13:16:54

+0

@Veer:我正在考慮爲集合添加一個空的員工對象,並將SelectedEmployee設置爲集合中的新項目。爲什麼它沒有意義?如果我錯誤理解某些明顯的東西,道歉,英語不是我的母語。 – ThomasAndersson 2010-06-10 14:09:27

+0

如何將文本框中的數據保存到空的員工對象呢? – Amsakanna 2010-06-10 14:22:31

0

您可能會發現有用的WPF Application Framework (WAF)的示例應用程序BookLibrary。它與您描述的應用程序非常相似,但它使用書籍而不是員工。 :-)

0

您是否要默認跳轉到創建新員工狀態?如果你不想先按下某個按鈕,這可能會有所幫助。

您可以將集合放入IEditableCollection中,讓Employee對象實現IEditableObject。

然後,用戶將按下一個按鈕,該按鈕將調用IeditableCollection的addnew()方法(我們稱之爲IEC),這樣會向集合中添加一個新的項目,它將處於編輯模式。

IEC.CancelNew將再次從集合中刪除對象 IEC.CommitNew將永久添加對象並停止對其進行編輯。

您還可以訪問EditItem,CommitEdit和CancelEdit來編輯已存在的對象。

這移除具有保存對象時,它仍然沒有得到正確的信息就可以了,然後再編輯右信息的麻煩

+0

這是正確的軌道,併爲上述情況非常好。我經常使用ObservableCollection,但是當我發現ListCollectionView時,我完全瞭解它。在數據綁定中使用IsSynchorizedWithCurrentItem時,ListCollectionView有一個小問題不與當前項保持同步。對此的修復就在這裏。 http://coderelief.net/2011/11/07/fixing-issynchronizedwithcurrentitem-and-icollectionview-cancel-bug-with-an-attached-property/ – GetFuzzy 2014-05-22 21:54:20