In WPF-Datagrids habe ich eine Spalte definiert als DataGridTemplateColumn, die ich für alle Arten von Spalten verwenden muss. Als sehr vereinfachtes Beispiel bitte die unten als Dummy-Probe betrachten:Wie WPF DataGridTemplateColumn (einschließlich Bindung) wiederverwendet wird
<DataGrid ItemsSource="{Binding Path=ItemList, Mode=OneWay}" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name" MinWidth="130" Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<Image Source="component/Images/test.png"/>
<TextBlock Text="{Binding Path=Name, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DockPanel LastChildFill="True">
<Image Source="component/Images/test.png"/>
<TextBox Text="{Binding Path=Name, Mode=TwoWay, ValidatesOnDataErrors=True}"/>
</DockPanel>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Company" Binding="{Binding Company, ValidatesOnDataErrors=True}" MinWidth="115" Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
Für ein einfaches Beispiel, wie könnte ich die gleiche Vorlage für Spalte mit Kopf = Name auf die Säule mit Kopf = Unternehmen verwendet gelten, ohne mit die gesamte Vorlage für jede Spalte reproduzieren?
Ich habe eine Antwort mit this previous SO question, wo sie erklären, mit Ressourcen wie gefunden:
<Application.Resources>
<DataTemplate x:Key="CellTemplate">
...
</DataTemplate>
<DataTemplate x:Key="CellEdintingTemplate">
...
</DataTemplate>
</Application.Resources>
<DataGrid Style="{StaticResource MainGridStyle}">
<DataGrid.Columns>
<DataGridTemplateColumn CellTemplate="{StaticResource MyFirstColumnCellTemplate}" CellEdintingTemplate="{StaticResource MyFirstColumnCellEdintingTemplate}"/>
...
</DataGrid.Columns>
<DataGrid>
Das bin ich 95% dort ankommt, aber das letzte Stück ist mir persönlich fehlt, wie verbindlich die Daten zu handhaben? Wie erstelle ich einen Typ von Platzhalter in der Vorlage und mache dann die tatsächliche Bindung im Raster?
EDIT Ich habe gehalten Suche und fand die Frage Create Common DataGridTemplateColumn, die so klingt, was ich will in der Tat zu tun, kann zur Zeit nicht möglich. Wenn also jemand anderes versucht, dies zu tun und diese Frage zu sehen, kann ich nicht garantieren, dass es unmöglich ist, aber aus dieser Verbindung scheint es vielleicht zu sein. Es muss also nur der gesamte Tempaltext für jede Spalte dupliziert werden.
es möglich wäre, ContentPresenter, um ein DataTemplate zu verwenden, das in Ressourcen in der Nähe definiert ist? –