Как добавить столбец количества в DataGrid из списка ListView в WPF - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть ListView, данные которого я выбираю и отправляю в DataGrid. У меня возникли проблемы со столбцом количества в DataGrid, который я хотел бы рассчитать, сколько раз элемент ListView был добавлен в упомянутую DataGrid (в настоящее время я отображаю сообщение об успехе, когда выбран тот же элемент). Я также хотел бы рассчитать цену и количество и отобразить их в одном столбце с именем «цена» в DataGrid.

Вот таблица данных

 <ListView x:Name="ItemGridView" ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" PreviewMouseDoubleClick="ItemGridView_PreviewMouseDoubleClick">    
     <ListView.View>
        <GridView AllowsColumnReorder="False">
           <GridViewColumn>                                                        
               <GridViewColumn.CellTemplate>
                  <DataTemplate>
                     <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal">
                         <Grid Margin="5">
                             <Grid.RowDefinitions>
                                 <RowDefinition Height="Auto" />
                             </Grid.RowDefinitions>
                             <Grid.ColumnDefinitions>
                                 <ColumnDefinition Width="Auto" />
                             </Grid.ColumnDefinitions>

                             <Image Source="{Binding ItemImage}" Width="225" Height="157" Stretch="UniformToFill" StretchDirection="DownOnly" />

                             <StackPanel Margin="0,100,0,0">
                               <Border Margin="-0,-7,0,0"  Height="63" Width="225" Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0">
                                   <TextBlock Margin="8" FontWeight="Heavy" Foreground="White" FontSize="16" Text="{Binding ItemName}"/>
                               </Border>
                                <TextBlock Margin="15,-28,0,0" FontSize="15" Text="{Binding SellingPrice}" Foreground="White"/>
                             </StackPanel>
                         </Grid>                                                                    
                     </StackPanel>
                  </DataTemplate>
               </GridViewColumn.CellTemplate>
            </GridViewColumn>
         </GridView>
    </ListView.View>                                               
</ListView>

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

<DataGrid x:Name="DGItems" ItemsSource="{Binding}" VerticalAlignment="Top" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" Grid.Row="0" MinHeight="350" MaxHeight="350" ScrollViewer.CanContentScroll="True" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" CanUserSortColumns="True" CanUserAddRows="False" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn MinWidth="3" Header="#" Width="Auto" Binding="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Converter={global:RowToIndexConverter}}" />
        <DataGridTextColumn Header="Items" Binding="{Binding ItemName}" />
        <DataGridTextColumn Header="Cost" Binding="{Binding SellingPrice}" />
        <DataGridTextColumn Header="Qty"  />           
    </DataGrid.Columns>
</DataGrid>

Код для отправки данных после события двойного щелчка ListView:

 private void ItemGridView_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
 {
      var selectedItem = ItemGridView.SelectedItem;

      if (!DGItems.Items.Contains(selectedItem))
      {
          DGItems.Items.Add(selectedItem);
      }
      else
      {
          utilityMethods.InformationMessage("Attempted to add item successfully");                
      }

 }

Я включил снимки экрана, чтобы предварительно просмотреть, как приложение выглядит просто, чтобы поставить вопрос в контексте.

Sale Screen Screenshot

...