我正在WPF項目中工作,我正在項目中使用MVVM模式。我創建了一個用戶控件(同樣在WPF中),我想在我的項目中使用它,現在,我的問題是我的用戶控件中有一個方法需要從我的視圖模型中調用,但是我不知道該怎麼做,如何從視圖模型綁定到我的控制內的方法。如何使用MVVM調用用戶控件方法?
如果我使用後面的代碼,顯然沒有問題,因爲我直接引用了我的控件,所以我可以執行「mycontrol.MyMethod();」m,但當然,這樣做會違規MVVM模式的邏輯。
我試圖在我的用戶控件中使用依賴屬性,並使用該依賴屬性綁定到它在我的項目的xaml但它沒有奏效,編譯器說該屬性未找到或不是序列化。
因此,我將不勝感激,如果有人可以分享我如何才能做到這一點一些輕。
編輯
據我理解你的觀點,這是所有的GUI,那麼你的模型,它是所有的邏輯,和他們,你有視圖模型這就好比用於將視圖與模型綁定的中間層,對吧?
以這種方式我開發了我的項目,但是我遇到了需要自定義控件,記住用戶輸入內容的TextBox以及何時開始輸入的文本框,如果有以該字母開頭的單詞,那些話就像谷歌這樣做,就是一個建議。
該文本框用作搜索過濾器;所以我創建了一個用戶控件來執行此操作,我向用戶控件添加了一個方法,以允許使用我的控件的任何應用程序將項添加到包含用戶輸入的所有字符串的內部數組。
我創建了一個用戶的控制,因爲我找不到,其行爲就是我想要的任何控制。
所以我的問題是當我將用戶控件添加到主項目時,因爲我需要某些方面能夠調用將項目添加到內部數組的方法,但也許我做錯了方式,所以如果你們中的任何一個人有更好的主意,我會很感激,如果你與我分享。
是的,你是完全正確的,那樣就更容易了,但是,我按照你的建議來嘗試它,但是當我在視圖模型的相應屬性中添加或刪除項目時,我的用戶控件中的依賴項屬性從未更新。 – Vic 2010-02-10 21:08:27
@Vic:這聽起來像是一個INotifyPropertyChanged問題或類似的東西。這是基本的綁定通知的東西。羅伯特的建議應該可行......你只需要在綁定上挖一點點。本文將幫助您調試綁定:http://bea.stollnitz.com/blog/?p=52 – 2010-02-10 22:37:58
我發現了兩種解決此問題的方法,第一種方法是將我的目標屬性設置爲依賴屬性,因此View-Model類必須從DependencyObject繼承。另一種方法是將我的目標屬性作爲公共屬性,但在集合{}中,您必須添加「base.RaisePropertyChanged(」your_property_name「);」並且View-Model類將不得不從ObservableObject繼承。非常感謝,因爲沒有你的意見,我不會做到。 – Vic 2010-02-11 16:51:20