2011-06-02 120 views
0

所以,我對Silverlight開發相當陌生,我試圖找出並使用Caliburn.Micro框架。我知道CM使用約定來將視圖模型中的屬性與視圖中的元素進行匹配,並且可以在CM的ConventionManager類中找到默認約定。我有一個名爲「Libraries」的TreeView(使用Silverlight Toolkit),並且我已經成功地將我的視圖模型中的ObservableCollection類型的屬性綁定到了TreeView。該物業也被命名爲「圖書館」,所以CM完成了其餘的工作。使用Caliburn.Micro綁定屬性和方法到單個元素

現在,我想在視圖模型中創建一個屬性,該屬性將使用TreeView的SelectedItem進行設置。我應該如何使用CM的約定來做到這一點?我應該命名該物業?

最後,我希望視圖模型中的一個方法在TreeView的SelectedItemChanged事件被觸發時被調用。我應該如何命名該方法,以便通過約定來完成?

任何人都可以幫忙嗎?

艾森伯格... ...艾森伯格(以我最好的本·斯坦扮演)

謝謝, 大衛

編輯:我還應該注意到,我已經修改了CM組件添加以下行到ConventionsManager的構造,因爲它是以前從Silverlight的版本CM DLL的除外:

AddElementConvention(TreeView.ItemsSourceProperty, "SelectedItem", "SelectedItemChanged");

回答

1

你應該能夠創建一個名爲SelectedL的公共屬性庫或ActiveLibrary和CM將完成剩下的工作。如果不工作,你總是可以依傍的行動:

cal:Message.Attach="[Event SelectedItemChanged] = [Action SelectedLibrary($eventArgs)]" 

編輯:你需要的屬性setter和火的方法?

+0

德里克,謝謝你的幫助。我嘗試命名屬性「ActiveLibrary」和「SelectedLibrary」無濟於事。我能夠使用Message.Attach在視圖模型中啓動該方法,但是我試圖更好地理解這些約定。我也明白,設置財產和解僱方法是多餘的,但同樣,這對我來說是一個學習練習。 – Daveed 2011-06-03 01:11:41

+0

該約定可能不適用於TreeView控件。如果你嘗試使用ListBox應該是可行的。我想開火的方法會給你更多的選擇,你可以通過的東西。 – 2011-06-03 02:11:57

+0

模型不能綁定到TreeView的SelectedItem屬性,因此沒有相同的約定。如果你使用Selector類型控制,它允許數據綁定,CM支持這裏提到的約定。直到使用Derek分享的內容。 – Chandermani 2011-06-03 12:20:24