c# - DataGrid 列标题中的 WPF 右对齐按钮

标签 c# wpf xaml 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

我认为使用网格可以解决问题,但当我选择网格并查看设计器时,它的宽度不是列的整个宽度,只是文本 block 和按钮的宽度。

为了使按钮在标题中右对齐,我缺少什么?

最佳答案

使用列的 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>

关于c# - DataGrid 列标题中的 WPF 右对齐按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41589307/

相关文章:

WPF 将 FrameworkElement 事件绑定(bind)到命令

c# - 单击 ListBoxItem 区域内的任何控件时触发器 SelectedIndex 发生更改

c# - 使用多重绑定(bind)编辑文本框

c# - 如何根据属性获得两个类的交集

c# - 单击按钮时禁用选中的复选框

c# - 如何从 View 模型将 Func<T,T,T> 绑定(bind)到 XAML 中的依赖属性?

wpf - 绑定(bind)到父 ListViewItem 的 IsSelected 属性

c# - 如何在自定义类中创建名称数组

c# - 如何在mvc C#中加入和选择表数据?

c# - 如何在 LINQ 中获取和使用分组源?