Je souhaite que mes colonnes DataGrid partagent un gabarit cell/celledit. J'ai la solution faire cela (merci à WPF DataGridTemplateColumn shared template?). Maintenant, ce que j'aimerais, c'est améliorer la lisibilité en évitant tous les nids de nœuds.wpftoolkit DataGridTemplateColumn Modèle de liaison
Mon opinion actuelle ressemble à ce que:
<wpftk:DataGrid ItemsSource="{Binding Tests}" AutoGenerateColumns="False">
<wpftk:DataGrid.Resources>
<DataTemplate x:Key="CustomCellTemplate">
<TextBlock Text="{TemplateBinding Content}"/>
</DataTemplate>
<DataTemplate x:Key="CustomCellEditingTemplate">
<TextBox Text="{TemplateBinding Content}"></TextBox>
</DataTemplate>
</wpftk:DataGrid.Resources>
<wpftk:DataGrid.Columns>
<wpftk:DataGridTemplateColumn Header="Start Date">
<wpftk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ContentPresenter ContentTemplate="{StaticResource CustomCellTemplate}" Content="{Binding StartDate}"/>
</DataTemplate>
</wpftk:DataGridTemplateColumn.CellTemplate>
<wpftk:DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ContentPresenter ContentTemplate="{StaticResource CustomCellEditingTemplate}" Content="{Binding StartDate}"/>
</DataTemplate>
</wpftk:DataGridTemplateColumn.CellEditingTemplate>
</wpftk:DataGridTemplateColumn>
<!--and again the whole block above for each columns...-->
</wpftk:DataGrid.Columns>
</wpftk:DataGrid>
Ce que je voudrais obtenir est de lier la valeur au niveau DataGridTemplateColumn
et se propager au niveau du modèle. Quelqu'un sait comment faire cela?
Ce que j'ai essayé de faire est quelque chose comme ça:
<wpftk:DataGrid ItemsSource="{Binding Tests}" AutoGenerateColumns="False">
<wpftk:DataGrid.Resources>
<DataTemplate x:Key="CustomCellTemplate">
<TextBlock Text="{Binding}"/>
</DataTemplate>
<DataTemplate x:Key="CustomCellEditingTemplate">
<TextBox Text="{Binding}"></TextBox>
</DataTemplate>
</wpftk:DataGrid.Resources>
<wpftk:DataGrid.Columns>
<wpftk:DataGridTemplateColumn Header="Start Date" Binding="{Binding StartDate}" CellTemplate="{StaticResource CustomCellTemplate}" CellEditingTemplate="{StaticResource CustomCellEditingTemplate}"/>
<wpftk:DataGridTemplateColumn Header="End Date" Binding="{Binding EndDate}" CellTemplate="{StaticResource CustomCellTemplate}" CellEditingTemplate="{StaticResource CustomCellEditingTemplate}"/>
</wpftk:DataGrid.Columns>
</wpftk:DataGrid>
Il est évident que létablissement de liaison n'est pas une propriété valide de la DataGridTemplateColumn
mais peut-être en jouant avec le datacontext et une source relative pourrait faire l'affaire, mais franchement Je ne peux pas trouver un moyen de mettre en œuvre cela. Je ne sais pas si ce que je veux est possible et je suis prêt à accepter une « aucune façon, vous pouvez le faire » comme une réponse
NOTE
: Le TextBlock
/TextBox
dans le modèle est juste pour le test (le modèle réel est beaucoup plus complexe) DataGridTextColumn
ne fera pas l'affaire Merci à l'avance
Je ne suis pas sûr que je vous suis, mon problème est que je ne sais pas comment lier les données réelles directement à partir de DataGridTemplateColumn, Liaison n'est pas une propriété de DataGridTemplateColumn. Je peux lier le modèle d'édition et le modèle normal mais je ne sais pas comment lier les données au modèle. mon estimation est de mettre le DataContext du modèle avec les données que je veux mais je ne sais pas comment faire cela – Guillaume
Edited answer pour mieux répondre à votre question initiale. – Dennis
Génial! que je cherchais – Guillaume