我把在一起了一些通用的CellTemplate风格为WPF网格(WPFToolKit DataGrid中),我不知道语法的使用,使结合通用。 因此,例如,我有这个模板,它变成了红色的值,如果该值为负:
<DataTemplate x:Key="RedNegativeCellTemplate">
<TextBlock Name="QuantityTextBox" Text="{Binding Quantity, StringFormat='c', Mode=OneWay}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Quantity, Converter={StaticResource SignConverter}}" Value="-1">
<Setter TargetName="QuantityTextBox" Property="Foreground" Value="Red"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
你会发现,这有一个文本框的列值“ 量 ”结合-即场/列的绑定来自是明确的。
因此,我可以在我的WPF DataGrid中按如下方式使用这样的:
<sdk:DataGrid ItemsSource="{Binding MyDataSource}" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Net Quantity" CellTemplate="{StaticResource RedNegativeCellTemplate}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
但是......我真的很想做的是让现场的模板结合通用的,这样我就可以重新使用模板如下:
<sdk:DataGrid ItemsSource="{Binding OrdersQuery}"AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTemplateColumn Header="Quantity" CellTemplate="{StaticResource RedNegativeCellTemplate}"/>
<sdk:DataGridTemplateColumn Header="Price" CellTemplate="{StaticResource RedNegativeCellTemplate}"/>
<sdk:DataGridTemplateColumn Header="Total" CellTemplate="{StaticResource RedNegativeCellTemplate}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
现在,这里的问题是,似乎没有被参数化的CellTemplate结合的方式。 但我不愿意要有3+线的ControlTemplate为使用该模板的每一列,因为它杂波的XAML,并使其远不如可读(不提的是,如果我决定改变细胞模板把围绕文本框的边框,我不得不改变它在多个地方。
所以我想,在CellTemplate内的结合应该是这个样子(请注意,我们使用的绑定路径“”):
Text="{Binding Path=., StringFormat='c', Mode=OneWay}"
然后以某种方式设置为从DataGridTemplateColumn声明DataContext的 - 但我看不出如何做到这一点。
任何想法如何做到这一点?