Tengo una cuadrícula de datos para la que quiero admitir Excel como la funcionalidad de filtro. Aquí está la captura de pantalla del encabezado de columna: ingrese la descripción de la imagen aquí

He agregado un icono de filtro al lado del encabezado de columna. El problema es que este ícono debe desplazarse hacia el lado derecho de la columna. Justo donde está el círculo vacío. El usuario puede cambiar el tamaño de la columna arrastrando con el mouse y, por lo tanto, el ícono debe pegarse en el extremo derecho de la columna cuando el usuario aumenta o disminuye el ancho. Aquí está el código:

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

¿Cómo puedo lograrlo?

0
The King 4 abr. 2017 a las 08:38

2 respuestas

La mejor respuesta

Estoy escribiendo esto sobre la marcha. Le dará una idea para superar el problema. Puede lograr esto usando Grid o DockPanel. Aquí está el que usa DockPanel

<DataGridHyperlinkColumn.Header>
    <DockPanel>
         <TextBlock Text="Package Name"/>
         <Button DockPanel.Dock="Right" />
    </DockPanel>
</DataGridHyperlinkColumn.Header>

EDITAR:

Actualización basada en comentarios, debe estirar el ancho del encabezado de la columna para ocupar todo el ancho como lo menciona @ grek40

<DataGridTextColumn.HeaderStyle>
    <Style TargetType="DataGridColumnHeader">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</DataGridTextColumn.HeaderStyle>

Espero que eso ayude.

1
Gopichandar 4 abr. 2017 a las 07:32

Debe asegurarse de que el contenido del encabezado esté usando el tamaño del encabezado. Estoy usando Dockpanel similar a la respuesta de Gopichandar y una definición HeaderStyle.

<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>
0
grek40 4 abr. 2017 a las 07:19