我有一个数据网格,我想支持excel,如过滤器功能。 以下是列标题的屏幕截图:
我在列标题旁边添加了一个过滤器图标。问题是该图标应该移到列的最右侧。就在空圈的位置。用户可以使用鼠标拖动来调整列的大小,因此当用户增加或减小宽度时,图标应粘贴到列的右端。 这是代码:
<DataGridHyperlinkColumn Binding="{Binding PackageName}" MinWidth="250" IsReadOnly="True" >
<DataGridHyperlinkColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Package Name"/>
<Button Name="PackageNameFilter" Click="PackageNameFilter_Click" HorizontalAlignment="Right">
<Button.Template>
<ControlTemplate>
<Image Source="/Resources/filter.png" Width="10" Height="10"/>
</ControlTemplate>
</Button.Template>
</Button>
</StackPanel>
</DataGridHyperlinkColumn.Header>
我怎样才能做到这一点?
答案 0 :(得分:1)
我正在写这篇文章。它会给你一个克服这个问题的想法。您可以使用Grid
或DockPanel
来实现此目的。这是使用DockPanel
<DataGridHyperlinkColumn.Header>
<DockPanel>
<TextBlock Text="Package Name"/>
<Button DockPanel.Dock="Right" />
</DockPanel>
</DataGridHyperlinkColumn.Header>
修改强>
根据评论更新,您必须拉伸列标题的宽度以占据@ grek40
所述的全宽度<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</DataGridTextColumn.HeaderStyle>
希望有所帮助。
答案 1 :(得分:0)
您需要确保标头内容实际上使用标头的大小。我正在使用类似于Gopichandar的答案和HeaderStyle定义的Dockpanel。
<DataGridHyperlinkColumn Binding="{Binding Test}" Width="*">
<DataGridHyperlinkColumn.Header>
<DockPanel LastChildFill="False">
<TextBlock Text="Header Text"/>
<Button DockPanel.Dock="Right" Content="Filter"/>
</DockPanel>
</DataGridHyperlinkColumn.Header>
<DataGridHyperlinkColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</DataGridHyperlinkColumn.HeaderStyle>
</DataGridHyperlinkColumn>