Я хочу, чтобы мои столбцы таблицы данных имели общий шаблон cell / celledit.
У меня есть решение для этого (благодаря WPF DataGridTemplateColumn shared template? ).Теперь я хотел бы улучшить читабельность, избегая вложенности всех узлов.
Мой текущий взгляд выглядит так:
<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>
То, чего я хотел бы достичь, - это привязать значениена уровне DataGridTemplateColumn
и распространите его на уровень шаблона.Кто-нибудь знает, как это сделать?
Что я пытался сделать, это что-то вроде этого:
<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>
Очевидно, что связывающая часть не является допустимым свойством DataGridTemplateColumn
, но, возможно, играяс помощью datacontext и некоторого относительного источника мог бы добиться цели, но, честно говоря, я не могу найти способ реализовать это.
Не уверен, что то, что я хочу, возможно, и я готов принять "никоим образом выможет сделать это "в качестве ответа
ПРИМЕЧАНИЕ : TextBlock
/ TextBox
в шаблоне только для теста (реальный шаблон намного сложнее) DataGridTextColumn
не будетсделать трюк Заранее спасибо