2015-02-17 3 views
2

У меня есть DataGrid с некоторыми столбцами:Как добавить вручную кнопку на конец DataGrid в чистом XAML?

<DataGrid.Columns> 
    <DataGridTextColumn Header="Date" Binding="{Binding Date}, Mode=OneWay}"></DataGridTextColumn> 
    //9 DataGridTextColumn more 
</DataGrid.Columns> 

Я хотел бы добавить кнопку в конце DataGrid. Независимо от количества строк, кнопка должна быть «последней строкой» с colspan по всем столбцам. Я пытался что-то, но он не работал:

//</DataGrid.Columns> 
<local:MyRecord Date="" ....> 
    <Button Grid.ColumnSpan="10" VerticalAlignment="Bottom" Click="Button1_Clicked" >Load More</Button> 
</local:MyRecord> 

код позади выглядит следующим образом:

public class MyRecord{ 
    public string Date{ get; set;} 
    //... 
} 

Как это возможно, чтобы добавить/добавить кнопку в конце моего DataGrid? Возможно ли это в чистом XAML?

+4

Зачем использовать DataGrid? Почему бы не использовать StackPannel с вашим DataGrid и кнопкой? – MorgoZ

+1

Как @MorgoZ говорит, почему бы не перейти на реализацию, которая лучше подходит для того, как работают элементы управления - вместо того, чтобы пытаться переделать что-то в это, на самом деле не подходит. «DataGrid» - отличный способ отображения множества элементов одинакового типа. Кнопка не такая же, как и остальные элементы в вашей сетке, поэтому на самом деле не подходит. – Mashton

+1

вам нужно задать вопрос, хотите ли вы помочь: «Я что-то пробовал, но он не работал:« не очень полезно, вам нужно объяснить, почему это не сработало. Вам нужно опубликовать полный XAML для DataGrid – AwkwardCoder

ответ

2

Прежде всего, вам необходимо использовать ScrollViewer и StackPanel. Поместите их вокруг DataGrid:

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> 
    <StackPanel> 
     <DataGrid> 
      ///Content goes here... 
     </DataGrid> 
     <Button Height="Auto" ....></Button> 
    </StackPanel> 
</ScrollViewer> 

В вашем DataGrid, вы будете нуждаться в (DataGrid.)Template:

<DataGrid RowHeaderWidth="0"> 
    <DataGrid.Template> 
     <ControlTemplate> 
      <StackPanel Orientation="Vertical"> 
       <DataGridColumnHeadersPresenter /> 
       <ItemsPresenter /> 
     </ControlTemplate> 
    </DataGrid.Template> 
</DataGrid> 

Теперь DataGrid использует ScrollViewer, чтобы включить прокрутку.