【发布时间】:2012-04-07 06:39:37
【问题描述】:
我希望我的数据网格列共享一个单元格/单元格编辑模板。
我有解决方案(感谢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 的有效属性,但也许通过使用数据上下文和一些相关来源可以做到这一点,但坦率地说,我找不到实现它的方法。
不确定我想要的是否可行,我愿意接受“你不可能做到”作为答案
注意:模板中的TextBlock/TextBox 仅用于测试(真正的模板要复杂得多)DataGridTextColumn 不会起作用
提前致谢
【问题讨论】:
标签: wpf xaml wpfdatagrid datagridtemplatecolumn