Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF数据网格中添加页脚行?_C#_Wpf - Fatal编程技术网

C# 如何在WPF数据网格中添加页脚行?

C# 如何在WPF数据网格中添加页脚行?,c#,wpf,C#,Wpf,如何在wpf datagrid中添加页脚行?我必须在wpf数据网格中为每列的总和添加一行,我不想使用任何dll或telerik之类的东西,只使用microsoft组件来实现这一点。我正在尝试这样做: 我还尝试添加一个网格而不是textblock,但是在调整datagrid列的大小时,它们无法调整大小,并且看起来非常难看。试试这个 <ScrollViewer VerticalAlignment="Top" HorizontalScrollBarVisibility="Auto">

如何在wpf datagrid中添加页脚行?我必须在wpf数据网格中为每列的总和添加一行,我不想使用任何dll或telerik之类的东西,只使用microsoft组件来实现这一点。我正在尝试这样做:


我还尝试添加一个网格而不是textblock,但是在调整datagrid列的大小时,它们无法调整大小,并且看起来非常难看。

试试这个

<ScrollViewer  VerticalAlignment="Top" HorizontalScrollBarVisibility="Auto">
    <StackPanel>
        <DataGrid ScrollViewer.HorizontalScrollBarVisibility="Disabled">
            <DataGrid.Columns>
                <DataGridTextColumn x:Name="Header1" Header="Header1"></DataGridTextColumn>
                <DataGridTextColumn x:Name="Header2" Header="Header2"></DataGridTextColumn>
                <DataGridTextColumn x:Name="Header3" Header="Header3"></DataGridTextColumn>
            </DataGrid.Columns>
            <TextBlock></TextBlock>
            <TextBlock></TextBlock>                          
        </DataGrid>
        <StackPanel HorizontalAlignment="Left" Orientation="Horizontal">
            <Grid Width="{Binding ElementName=Header1,Path=ActualWidth}">
                <TextBlock Margin="5,0,0,0" Text="Footer1"></TextBlock>
            </Grid>
            <Grid Width="{Binding ElementName=Header2,Path=ActualWidth}">
                <TextBlock Text="Footer2" Margin="5,0,0,0"></TextBlock>
            </Grid>
            <Grid Width="{Binding ElementName=Header3,Path=ActualWidth}">
                <TextBlock Text="Footer3" Margin="5,0,0,0"></TextBlock>
            </Grid>
        </StackPanel>
    </StackPanel>
</ScrollViewer>

结果
海娜·帕蒂尔的回答有一些问题。 当DataGrid的布局发生更改时,如滚动条可见或窗口大小调整时。然后页脚的位置发生变化

其概念是设置页脚文本块的左边距和宽度 当布局更新时


编辑
全部的
0
私有void DGSalesINvoice_布局已更新(对象发送方,事件参数e)
{
厚度t=lbl总边缘;
t、 左=(DGSalesINvoice.Columns[0]。实际宽度+7);
lblTotal.Margin=t;
lblTotal.Width=DGSalesINvoice.Columns[1]。实际宽度;
lblTotalSalesInvoiceAmount.Width=DGSalesINvoice.Columns[2]。实际宽度;
}

它可以工作,但很难将页脚与总和绑定。假设我不想显示页脚3,而是想显示列或页眉3记录的总和,那么它就没有绑定。您可以创建一个附加属性并向其显示总和。
<DataGrid x:Name="DGSalesINvoice" LayoutUpdated="DG_LayoutUpdated">
    <DataGridTextColumn x:Name="DG_COL_IdSalesInvoice" Width="Auto" Header="ID" Binding="{Binding IdSalesInvoice}" />
    <DataGridTextColumn x:Name="DG_COL_CustomerName" Width="*" Header="Customer" Binding="{Binding CustomerName}" />
    <DataGridTemplateColumn x:Name="DG_COL_SalesInvoiceAmount" Width="Auto" Header="Invoice Amount">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <TextBlock HorizontalAlignment="Right" Text="{Binding SalesAmount}"></TextBlock>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTemplateColumn x:Name="DG_COL_EditBtn" Width="50">
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button x:Name="btnEditCompany" Tag="{Binding IdSalesInvoice}">Edit</Button>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid>
<StackPanel Orientation="Horizontal" Grid.Row="2" Background="GhostWhite">
    <TextBlock x:Name="lblTotal" TextAlignment="Right" FontWeight="Bold">Total</TextBlock>
    <TextBlock x:Name="lblTotalSalesInvoiceAmount" TextAlignment="Right" FontWeight="Bold">0.00</TextBlock>
</StackPanel>

private void DGSalesINvoice_LayoutUpdated(object sender, EventArgs e)
{
    Thickness t = lblTotal.Margin;
    t.Left = (DGSalesINvoice.Columns[0].ActualWidth + 7);
    lblTotal.Margin = t;
    lblTotal.Width = DGSalesINvoice.Columns[1].ActualWidth;

    lblTotalSalesInvoiceAmount.Width = DGSalesINvoice.Columns[2].ActualWidth;
}