一、序言
#在日常在的介面開發中,我們大多使用MVVM模式進行開發。通常情況下,一個PropertyGridControl或DataGrid的ItemsSource設定好,
然後每一列綁定某一ItemsSource中的某一欄位就可以跑起來了。
也有另一個情境:
它的ViewModel為TempViewModel.cs;
##卷# PropertyGridControl中的一個PropertyDefinition要重寫Template,它所綁定的資訊並不只有Model中的某個欄位
,
# 也為可能包含Model中的若干個欄位
,甚至TempViewModel中的一些其它訊息,這個時候該如何操作?
二、實例Temp.xaml:
<services:DockablePane.Resources>
<ResourceDictionary>
<DataTemplate x:Key="EditTemplate">
<special:SpEdit x:Name="PART_Editor"/> //这里是关键!!!!!!!!!!!!!!!
</DataTemplate>
</ResourceDictionary>
</services:DockablePane.Resources>
<dxprg:PropertyGridControl
Margin="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"SelectedObjects="{Binding Infos}" ShowProperties="WithPropertyDefinitions"ShowDescriptionIn="ToolTipAndPanel" ShowCategories="True" ExpandCategoriesWhenSelectedObjectChanged="True"ShowMenuButtonInRows="False" ShowToolPanel="False" ShowSearchBox="False" SortMode="Definitions">
<dxprg:PropertyGridControl.PropertyDefinitions>
<!--通用-->
<dxprg:PropertyDefinition IsReadOnly="True" Path="Code"/>
<dxprg:PropertyDefinition IsReadOnly="True" Path="AProperty"/>
<dxprg:PropertyDefinition Path="BProperty"/>
<dxprg:PropertyDefinition Path="CProperty"/>
<dxprg:PropertyDefinition Path="DProperty"/>
<dxprg:PropertyDefinition Path="EProperty" ContentTemplate="{StaticResource EditTemplate}"/>
</dxprg:PropertyGridControl.PropertyDefinitions>
</dxprg:PropertyGridControl>
#在這裡,我們重寫的DataTemplate中的窗體名稱為:PART_Editor#這個名字特別重要,不能改其它的。
這樣我們就可以在SpEdit這個窗體中呼叫
TempViewModel的全部訊息,因為這個時候TempViewModel#已經賦值給了
SpEdit某個屬性上,
##可能的情況是這樣的:SpEdit.xaml.cs:#
var source = this.DataContext as RowData;if (source != null) _sourceData = (source.Definition.DataContext) as VM;
這樣,我們就把Temp.xaml的ViewModel傳給了SpEdit的_sourceData。
三、小結###################### # ############本文主要描述如何在重寫介面中取得來源UI中的ViewModel資訊。 PART_Editor是一個非常實用的隱藏方法。 ######以上是分享PART_Editor的使用實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!