2017-01-11 114 views
1

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

这是我目前的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

我想用电网会做的伎俩,但是当我选择网格并期待在设计它的宽度不列仅在宽度上的文字块和按钮的整个宽度。

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

回答

4

使用设置DataGridColumnHeader的Horizo​​ntalContentAlignment属性栏的HeaderStyle为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> 
+0

是写了同样的答案;) – WPFUser

+0

@ MM8完美的,我怎么会不明白这一点越快。我发现我已经创建了一个资源,但使用了Horizo​​ntalAlignment = stretch,我很傻 –