我正在尝试创建一个包含2行的DataGridColumnHeader。 我希望它看起来像这样:
HeaderText和ID是自定义DataGridColumn的AttachedProperties。 我想用DataGridColumnHeader的以下模板显示这两个属性:
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Margin="0">
<Border Margin="0"
BorderBrush="Black"
BorderThickness="0,0,0,1">
<TextBlock Text="{Binding Path=HeaderText, RelativeSource={RelativeSource AncestorType={x:Type ctrls:MyDataGridColumn}}}" />
</Border>
<TextBlock Text="{Binding Path=ID, RelativeSource={RelativeSource AncestorType={x:Type ctrls:MyDataGridColumn}}}" />
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
我的自定义列的示例:
<ctrls:MyDataGridColumn HeaderText="some text" ID="1" />
HeaderText和ID不会显示......任何提示?
答案 0 :(得分:0)
使用DataGridColumns时,我通常使用Window Resources / DataTemplates而不是样式。例如:
<Window.Resources>
<DataTemplate x:Key="TemplateName">
<insert stackpanel & TextBlocks here/>
</DataTemplate>
</Window.Resources>
然后,在GridView中,将列设置为:
<GridViewColumn CellTemplate="{StaticResource TemplateName}"/>
如果这不是您正在寻找的答案,我道歉。但这就是我一直实现你所说的目标的方式。如果您有任何问题,请告诉我们!
编辑:我也从未使用类似的绑定。让我举个例子:
这是gridviewcolumn的datatemplate,它有一个复选框,绑定到items source中的Class中的bool属性:
<DataTemplate x:Key="IssueTemplate">
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding IssueMe, Mode=TwoWay}"/>
</DataTemplate>
编辑2:我现在看到你正在谈论标题,这使得我的回答毫无意义。我很抱歉。我通常会根据具体情况设置标题:
<GridViewColumn CellTemplate="{StaticResource IssueTemplate}">
<GridViewColumnHeader HorizontalAlignment="Center">
<StackPanel HorizontalAlignment="Center">
<TextBlock Text="Issue" HorizontalAlignment="Center"/>
<Viewbox>
<Button Content="Check/Uncheck All" FontSize="6" Margin="5 0 5 0" Command="{Binding CheckClick}"/>
</Viewbox>
</StackPanel>
</GridViewColumnHeader>
</GridViewColumn>
如果你需要一种风格,那么我担心我无法提供更多帮助。我最好的建议是看看你的绑定;有些东西与他们IMO一起看。
祝你好运!答案 1 :(得分:0)
您现在的Binding
无效DataGridColumn
不是Visual
,因此它不会参与VisualTree
,因此您无法遍历它。它只是一个信息持有者,没有别的。 DataGridColumnHeader
包含一个属性Column
,可让您访问DataGridColumn
。
所以,对两个属性都这样做:
<TextBlock Text="{Binding Path=Column.HeaderText, RelativeSource={RelativeSource AncestorType={x:Type DataGridColumnHeader}}}" />
请告诉我这是否解决了您的问题。