2010-03-14 27 views
0

到目前爲止,我的計劃是讓屬性檢查器監聽的事件「Item selected」。實際的屬性檢查器只是一個ContentControl。選擇對象時,將設置content屬性,並加載用於編輯對象的相應DataTemplate。在WPF中實現屬性檢查器/編輯器

一般來說,我試圖做到這一點「MVVM」風格。我想你可以使用反射而不是模板,但到目前爲止我只有少數類型。

有沒有人實現過類似的東西?

你能提供任何建議或源代碼嗎?

回答

1

基本上,你要找的是一個PropertyGrid的......看看這個:http://www.codeplex.com/wpg

+0

是的,我剛剛發現。也許我應該使用反射,雖然我的很多類型都是弱建模,所以根據「類型標識符」我需要顯示不同的編輯器 - 反射不會完成。我猜我的問題與將屬性檢查器連接到我的應用程序的體系結構相同 – Schneider 2010-03-14 02:05:09

+1

因爲它能夠理解ComponentModel屬性(如默認值,類別,編輯器......),所以您應該使用TypeDescriptor而不是反射。 – 2010-03-14 02:30:21

+0

對於任何人都好奇的「WPG」項目似乎瞄準.net 4 – Schneider 2010-03-14 05:10:54

0

如果你想這樣做MVVM風格,那麼反而有ItemSelected事件,並使用代碼來設置的督察的內容,在你的視圖模型一個SelectedItem屬性,並檢查的內容綁定到該屬性:

<ContentControl Content="{Binding SelectedItem}" /> 

你如何更新的SelectedItem將取決於您的視圖和模型的性質。例如,如果項目顯示在像ListBox這樣的Selector控件中,那麼您只需雙向將Selector.SelectedItem綁定到視圖模型的SelectedItem。

+0

這是一個真正的屬性編輯器,所以它從任何其他視圖解耦。它將位於它自己的工具窗口中,因此不會有「本地」控件綁定到如ListBox。目前正在規劃使用調解器模式 – Schneider 2010-03-14 02:16:07

+0

視圖模型可以跨越多個窗口 - 只需將工具窗口綁定到與「觀察」窗口相同的視圖模型實例即可。當然,如果有多個編輯器需要顯示項目的「文檔」窗口,那麼該計劃就會分崩離析。但是,中介聽起來不錯,而且更一般。 – itowlson 2010-03-14 02:32:32

0

看看WPF Inspector項目。它是Snoop之類的間諜工具,但它也包含一個調試觸發器的功能。