DataFrid列标题中的WPF右对齐按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DataFrid列标题中的WPF右对齐按钮相关的知识,希望对你有一定的参考价值。

我正在寻找在datagrid列标题的右侧添加一个过滤器按钮。我已经成功添加了按钮并实现了我需要的所有功能,我似乎无法让按钮在标题中正确对齐。

这是我目前的XAML:

<DataGridTextColumn Width="2*" IsReadOnly="True" Binding="{Binding Load}" x:Name="temp">
    <DataGridTextColumn.Header>
        <Grid Margin="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="16"/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="Load" />
            <Button Grid.Column="1" x:Name="btnFilter" Content="+" Margin="3,0,0,0" Click="btnFilter_Click"></Button>
        </Grid>
    </DataGridTextColumn.Header>
</DataGridTextColumn>

这就是它当前的样子以及我想要按钮的位置。

example

我认为使用网格可以做到这一点,但是当我选择网格并查看设计器时,它的宽度不是列的整个宽度,而只是文本块和按钮的宽度。

为了让标题中的按钮右对齐,我错过了什么?

答案

使用列的HeaderStyle将DataGridColumnHeader的Horizo​​ntalContentAlignment属性设置为Stretch:

<DataGridTextColumn ...>
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
    <DataGridTextColumn.Header>
        <Grid Margin="0">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="16"/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Text="Load" />
            <Button Grid.Column="1" x:Name="btnFilter" Content="+" Margin="3,0,0,0" HorizontalAlignment="Right"></Button>
        </Grid>
    </DataGridTextColumn.Header>
</DataGridTextColumn>
另一答案

虽然mm8的答案是完全正确的,但是(我相信)使用DockPanel会更有效率,而且它肯定更加简洁:

<DataGridTextColumn ...>
    <DataGridTextColumn.HeaderStyle>
        <Style TargetType="{x:Type DataGridColumnHeader}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </DataGridTextColumn.HeaderStyle>
    <DataGridTextColumn.Header>
        <DockPanel>
            <Button DockPanel.Dock="Right" x:Name="btnFilter" Content="+" Margin="3,0,0,0"></Button>
            <TextBlock Text="Load" />
        </DockPanel>
    </DataGridTextColumn.Header>
</DataGridTextColumn>

以上是关于DataFrid列标题中的WPF右对齐按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何让 WPF DataGrid 单元格右对齐而不使新行上的可选区域变小?

WPF Grid 列对齐方式:从第一到右,从第二到左

是什么使我的WPF弹出窗口与其PlacementTarget的右边缘对齐?

将 extjs dockeditems 中的按钮与左侧的分页工具栏右对齐

列底部的布尔玛对齐按钮

word2003论文中的公式如何居中,编号如何右对齐?