2017-04-04 12 views
0

私がサポートしたいデータグリッドは、フィルタ機能のように優れています。 ここに列見出しのスクリーンショットがあります: enter image description hereWPFのDatagrid列ヘッダーのShiftアイコン

私は列見出しの横にフィルターアイコンを追加しました。問題は、このアイコンを列の右端に移動する必要があることです。空の円がどこにあるか。マウスでドラッグすることで、列のサイズを変更することができます。したがって、ユーザーが幅を増減するときに、列の右端にアイコンが表示されます。 コードは次のとおりです。

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

どうすればいいですか?

答えて

1

私はこれをオンザフライで書いています。それはあなたに問題を克服するためのアイデアを与えるでしょう。これは、GridまたはDockPanelのいずれかを使用して実現できます。ここでDockPanel

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

EDIT使用していずれかになります。コメントに基づいて

Updateは、あなたが

<DataGridTextColumn.HeaderStyle> 
    <Style TargetType="DataGridColumnHeader"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    </Style> 
</DataGridTextColumn.HeaderStyle> 
grek40 @で述べたように全幅を占めるように列ヘッダーの幅を伸ばすために持っています

希望は役立ちます。

+0

グリッドで試しましたが、うまくいきません。ヘッダー名の幅が「パッケージ名」である理由は、列の幅よりもはるかに小さいからです。 DataGridHyperlinkColumn.Header内でグリッドまたはドックパネルを使用しているため、この問題は解決されません。 ドックパネルで試しても、それは変わっていません。 –

+0

@TheKing私は答えを更新しました。 – Gopichandar

+0

ありがとうございます。それが助けになりました。 –

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> 
関連する問題