数据网格中的按钮导出

时间:2018-03-01 09:46:21

标签: wpf xaml datagrid

我试图在数据网格的顶部添加一个导出按钮。我最大的问题是能够添加commandParameter,以及所有数据网格的选定项目。

我已经为contextMenu做过了,但是我需要添加一个按钮来做同样的想法。

以下是代码:

<Grid>
    <Controls:MetroContentControl>
        <Expander Header="HeaderExpa" VerticalAlignment="Top" Grid.Row="1" IsExpanded="True" IsEnabled="True">
            <Grid Name="Namegrid">
                <Grid.RowDefinitions>
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <DataGrid ItemsSource="{Binding ressource}" Name="NameDatagrid">
                    <DataGrid.Resources>
                        <Style x:Key="AlignBottomColumnHeader" BasedOn="{StaticResource AzureDataGridColumnHeader}" TargetType="DataGridColumnHeader">
                            <Setter Property="VerticalContentAlignment" Value="Bottom" />
                        </Style>
                    </DataGrid.Resources>
                    <DataGrid.Columns>
                        <!--Description-->
                    </DataGrid.Columns>
                    <DataGrid.ContextMenu>
                        <ContextMenu>
                            <MenuItem 
                                Header="HeaderContextMenu"
                                Command="{ Binding CommandExport }"
                                CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.SelectedItems}"
                            />
                        </ContextMenu>
                    </DataGrid.ContextMenu>
                </DataGrid>
            </Grid>
        </Expander>
    </Controls:MetroContentControl>
</Grid>

如何将此特定按钮添加到我的数据网格?我尝试了一些事情,比如添加

<DataTemplate x:Key="HeaderCheckbox">
    <Button Command="{x:Static DataGrid.SelectAllCommand}" Focusable="false" 
                Style="{DynamicResource {ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}}" 
                Visibility="Visible" 
                Width="200"/>
</DataTemplate>

<DataGrid.Resources>之后,在数据网格声明之前添加一个按钮,大部分时间,按钮都没有出现。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

只需在网格面板中再添加一行定义,然后只需将按钮添加到该特定行(网格上方的那一行),然后使用:

<Grid Name="Namegrid">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <Button Grid.Row="0" CommandParameter="{Binding ElementName=NameDatagrid, Path=SelectedItems}"/>
        <DataGrid Grid.Row="1" ItemsSource="{Binding ressource}" Name="NameDatagrid"/>
    </Grid>

PS:请为您的DataGrid提供一个名称,并将其用于按钮内的ElementName。按钮应位于DataGrid控件本身上方,而不是内部。请确保为DataGrid提及Grid.Row =“1”。