2015-12-27 4 views
0

У меня есть datagrid, который показывает следующие данные, когда я нажимаю кнопку «Добавить». Я хочу показать grand_total в нижней части сетки Динамически (область выделена желтым цветом) У меня есть поиск alot, но я не могу получить доступ к нижнему колонтитулу datagrid или тому подобному, также Я очень новое в WPFКак показать грандиозный итог, добавив все цены в столбце dataGrid (wpf)

Example

Мои Xaml КОД:

<DataGrid x:Name="dataGrid" CanUserAddRows="True" ItemsSource="{Binding ''}" AutoGenerateColumns="False" HorizontalAlignment="Left" VerticalAlignment="Top" Height="207" Width="507" IsReadOnly="True" Margin="0,66,0,0"> 
       <DataGrid.Background> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF23B4EA" Offset="0"/> 
         <GradientStop Color="#FF23D2EE" Offset="0.992"/> 
        </LinearGradientBrush> 
       </DataGrid.Background> 
       <DataGrid.Columns> 
        <DataGridTextColumn x:Name="product_name" Header="Product" Binding="{Binding Title}" Width="*"/> 
        <DataGridTextColumn x:Name="unit_price" Header="Unit Price" Binding="{Binding Price}" Width="*"/> 
        <DataGridTextColumn x:Name="quantity" Header="Quantity" Binding="{Binding Quantity}" Width="*"/> 
        <DataGridTextColumn x:Name="Total" Header="Total" Binding="{Binding Total_Price}" Width="*"/> 

        <DataGridTemplateColumn Width="*" Header="Operation"> 
         <DataGridTemplateColumn.CellTemplate > 
          <DataTemplate > 
           <Button Content="Delete" x:Name="btnDelete" 
            Click="btnDelete_Click"/> 
          </DataTemplate> 
         </DataGridTemplateColumn.CellTemplate> 
        </DataGridTemplateColumn>     
       </DataGrid.Columns>     
      </DataGrid> 

Вот как я устанавливаю данные сетки:

int q, p; 
       q = int.Parse(QuantityTextbox.Text); 
       p = int.Parse(PriceTextbox.Text); 
       double T_price = q * p; 
       var data = new Test 
       { 
        Title = titleTextbox.Text, 
        Price = PriceTextbox.Text, 
        Quantity = QuantityTextbox.Text, 
        Total_Price = T_price.ToString() 
       }; 
       dataGrid.Items.Add(data); 

Где Тест класс:

public class Test 
     { 
      public string Title { get; set; } 
      public string Price { get; set; } 
      public string Quantity { get; set; } 
      public string Total_Price { get; set; } 
      public string grand_total { get; set; } 
     } 

Пожалуйста, мне нужно упрощенное решение для этого, потому что я новичок в WPF

ответ

0

Добавьте следующее, используя заявление верхней части файла кода используется для доступа к DataGrid

using System.Linq; 

Создать Tex tBlock, чтобы показать обновленный итог из кода.

<TextBlock x:Name="GrandTotal" /> 

После код добавления данных, рассчитать общее количество с помощью элементов в сетке

... 
dataGrid.Items.Add(data); 
var grandTotal = dataGrid.Items.Cast<Test>().Sum(x => int.Parse(x.Total_Price)); 
GrandTotal.Text = String.Format("{0:c}", grandTotal); 

Объект TextBlock и DataGrid могут быть размещены в сетке, а затем вы можете поместить TextBlock туда, где вам нужно это будет.

<Grid> 
    <DataGrid x:Name="dataGrid" CanUserAddRows="True" ItemsSource="{Binding ''}" AutoGenerateColumns="False" HorizontalAlignment="Left" VerticalAlignment="Top" Height="207" Width="507" IsReadOnly="True" Margin="0,66,0,0"> 
       <DataGrid.Background> 
        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
         <GradientStop Color="#FF23B4EA" Offset="0"/> 
         <GradientStop Color="#FF23D2EE" Offset="0.992"/> 
        </LinearGradientBrush> 
       </DataGrid.Background> 
       <DataGrid.Columns> 
        <DataGridTextColumn x:Name="product_name" Header="Product" Binding="{Binding Title}" Width="*"/> 
        <DataGridTextColumn x:Name="unit_price" Header="Unit Price" Binding="{Binding Price}" Width="*"/> 
        <DataGridTextColumn x:Name="quantity" Header="Quantity" Binding="{Binding Quantity}" Width="*"/> 
        <DataGridTextColumn x:Name="Total" Header="Total" Binding="{Binding Total_Price}" Width="*"/> 
        <DataGridTemplateColumn Width="*" Header="Operation"> 
         <DataGridTemplateColumn.CellTemplate > 
          <DataTemplate > 
           <Button Content="Delete" x:Name="btnDelete" 
            Click="btnDelete_Click"/> 
          </DataTemplate> 
         </DataGridTemplateColumn.CellTemplate> 
        </DataGridTemplateColumn>     
       </DataGrid.Columns>     
     </DataGrid> 
     <TextBlock x:Name="GrandTotal" HorizontalAlignment="Right" VerticalAlighment="Bottom" Margin="0,0,24,24" /> 
    </Grid> 
+0

Спасибо за решение, но я хочу его в DataGrid, потому что я fuether печать сетки –

+0

данных В этом случае вам придется изменить шаблон для Datagrid, который является немного более сложным. – Nkosi

 Смежные вопросы

  • Нет связанных вопросов^_^