1. Avant-propos
Au quotidien life Dans le développement d'interfaces, nous utilisons principalement le modèle MVVM pour le développement. Normalement, le ItemsSource d'un PropertyGridControl ou DataGrid est configuré,
, puis chaque colonne est liée à un champ dans un ItemsSource et peut ensuite s'exécuter.
Mais il existe une autre situation :
Supposons une interface Temp.xaml, son ViewModel est TempViewModel.cs ;
Il existe un PropertyGridControl ItemsSource lié à ObservableCollection
Il peut également inclure plusieurs champs dans le Model
, ou mêmequelques autres informations dans le TempViewModel Comment dois-je opérer à ce moment-là ?
2. Exemples
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>
Ce nom est très important et ne peut être changé en autre chose.
De cette façon, nous pouvons appeler toutes les informations de TempViewModel sous la forme
SpEdit, car à ce moment TempViewModel Sur une propriété de qui a été affectée au DataContext de SpEdit, la situation possible de est la suivante suit :
SpEdit.xaml.cs:
De cette façon, nous passons le ViewModel de Le _sourceData de Temp.xaml SpEdit est donné.
var source = this.DataContext as RowData;if (source != null) _sourceData = (source.Definition.DataContext) as VM;
3.Résumé
Cet article décrit principalement comment obtenir les informations ViewModel dans l'interface utilisateur source dans l'interface de réécriture. PART_Editor est une méthode cachée très pratique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!