WPF中Datagrid列标题上的Shift图标

时间:2017-04-04 05:38:02

标签: c# wpf datagrid

我有一个数据网格,我想支持excel,如过滤器功能。 以下是列标题的屏幕截图: enter image description here

我在列标题旁边添加了一个过滤器图标。问题是该图标应该移到列的最右侧。就在空圈的位置。用户可以使用鼠标拖动来调整列的大小,因此当用户增加或减小宽度时,图标应粘贴到列的右端。 这是代码:

<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>

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

我正在写这篇文章。它会给你一个克服这个问题的想法。您可以使用GridDockPanel来实现此目的。这是使用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>