我在DataGrid的列的標題中放置一個帶有圖像的按鈕。單元格模板也只是一個帶圖片的簡單按鈕。WPF DataGrid HeaderTemplate神祕填充
<my:DataGridTemplateColumn>
<my:DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<Button ToolTip="Add New Template" Name="AddNewTemplate" Click="AddNewTemplate_Click">
<Image Source="../Resources/add.png"/>
</Button>
</DataTemplate>
</my:DataGridTemplateColumn.HeaderTemplate>
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button ToolTip="Edit Template" Name="EditTemplate" Click="EditTemplate_Click" Tag="{Binding}">
<Image Source="../Resources/pencil.png"/>
</Button>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
當呈現時,報頭具有大約10-15px填充的僅右側這使得細胞在該寬度留下具有在兩側空的空間的電池按鈕進行明顯呈現。作爲一個像素完美主義者,這讓我非常惱火。我最初認爲這是在排序時顯示箭頭的空間,但我已在整個DataGrid上顯式地在列上禁用排序。
這裏有一個形象: http://img716.imageshack.us/img716/1787/68487749.png
我想這是無論從那個是按鈕的父元素填充。有誰知道一種方法來消除它?
參見:
解決方案:
<my:DataGrid.Resources>
<Style x:Key="addHeader" TargetType="{x:Type myp:DataGridColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type myp:DataGridColumnHeader}">
<Button ToolTip="Add New Template" Name="AddNewTemplate" Click="AddNewTemplate_Click" Margin="4">
<Image Source="../Resources/add.png"/>
</Button>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</my:DataGrid.Resources>
<my:DataGrid.Columns>
<my:DataGridTemplateColumn HeaderStyle="{StaticResource addHeader}">
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button ToolTip="Edit Template" Name="EditTemplate" Click="EditTemplate_Click" Tag="{Binding}">
<Image Source="../Resources/pencil.png"/>
</Button>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
</my:DataGrid.Columns>
這讓我發現它出現在DataGridHeaderBorder中,它持有ContentPresenter(Button的父親)。沒有任何屬性指示填充起點的位置。啊。 – 2010-06-09 12:35:37
查看原貼中張貼的截圖。 – 2010-06-09 12:54:06
更新了答案。 – Anvaka 2010-06-09 13:12:07