Исправить DataContext для ListView WPF

Рейтинг: 0Ответов: 0Опубликовано: 28.05.2023

Есть WPF приложение с БД MS SQL SERVER и корзиной. Корзина реализована с помощью ListView, в ней отображаются объекты "SaleComposition". Должно отображаться название и картинка из таблицы "Product" с помощью "Binding", но ничего не работает. Думаю нужно как то поменять "DataContext" у элементов чтобы всё отображалось. Прикладывают кусок кода.

    Sale currentSale = new Sale();
    ClothingFactoryEntities contextDB = new ClothingFactoryEntities();
    
    public Cart(List<Product> products)
    {
        InitializeComponent();
        
        currentSale.ID_client = Pages.PageEnter.clientID;
        currentSale.SaleDate = DateTime.Now;
        txbClientFio.DataContext = contextDB.Client.ToList();
        DataContext = currentSale;

        ListViewCart.ItemsSource = contextDB.SaleComposition.Local.ToBindingList();

        foreach (Product item in products)
        {
            try
            {
                SaleComposition saleInOrder = new SaleComposition();
                saleInOrder.ID_sale = currentSale.ID;
                saleInOrder.ID_product = item.ID;
                saleInOrder.Amount = 1;

                currentSale.SaleComposition.Add(saleInOrder);
                contextDB.Entry(saleInOrder).State = EntityState.Added;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка", ex.Message);
            }
        }
    } 

И код разметки

<ListView Name="ListViewCart"
                  BorderThickness="0"
                  DataContext="SaleComposition"
                  Grid.Row="1"
                  ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                  Background="Transparent">
            <ListView.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel HorizontalAlignment="Center">

                    </StackPanel>
                </ItemsPanelTemplate>
            </ListView.ItemsPanel>

            <ListView.ItemTemplate>
                <DataTemplate>
                    <Border Height="60"
                            Width="900"
                            Background="#C2D2EA"
                            CornerRadius="10"
                            BorderThickness="2" 
                            BorderBrush="#e9fff9"
                            Margin="5">
                        <Grid Margin="5">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                                <ColumnDefinition></ColumnDefinition>
                            </Grid.ColumnDefinitions>

                            <Image Source="{Binding Product.Image}"
                                   HorizontalAlignment="Left"
                                   VerticalAlignment="Center"
                                   Margin="10 0 0 0">
                                <Image.Clip>
                                    <RectangleGeometry RadiusX="5" RadiusY="5" Rect="0 0 46 46">
                                        
                                    </RectangleGeometry>
                                </Image.Clip>
                            </Image>

                            <TextBlock Grid.Column="0"
                                       Grid.ColumnSpan="2"
                                       HorizontalAlignment="Center"
                                       VerticalAlignment="Center"
                                       Text="{Binding Product.Name}">
                            </TextBlock>

                            <TextBlock Grid.Column="2"
                                       HorizontalAlignment="Center"
                                       VerticalAlignment="Center"
                                       DataContext="SaleComposition"
                                       Text="{Binding TotalCost}">
                            </TextBlock>

                            <TextBlock Grid.Column="3"
                                       VerticalAlignment="Center"
                                       HorizontalAlignment="Center"
                                       Text="Кол-во: ">
                            </TextBlock>

                            <WrapPanel Grid.Column="4"
                                       Grid.ColumnSpan="2"
                                       VerticalAlignment="Center">
                                <Border Width="40"
                                        Height="40"
                                        Background="#6369D1"
                                        BorderBrush="#4349C7"
                                        BorderThickness="3"
                                        CornerRadius="50">
                                    <Button Name="btnDeleteAmount"
                                            Click="btnDeleteAmount_Click"
                                            BorderThickness="0"
                                            Background="Transparent"
                                            Foreground="#fff"
                                            Content="-">
                                    </Button>
                                </Border>

                                <TextBlock VerticalAlignment="Center"
                                           TextAlignment="Center"
                                           Margin="10"
                                           Width="45"
                                           Text="{Binding Amount}">
                                </TextBlock>

                                <Border Width="40"
                                        Height="40"
                                        Background="#6369D1"
                                        BorderBrush="#4349C7"
                                        BorderThickness="3"
                                        CornerRadius="50">
                                    <Button Name="btnAddAmount"
                                            Click="btnAddAmount_Click"
                                            BorderThickness="0"
                                            Background="Transparent"
                                            Foreground="#fff"
                                            Content="+">
                                    </Button>
                                </Border>
                            </WrapPanel>

                            <Border Grid.Column="5"
                                    Width="120"
                                    Background="#D81E5B"
                                    BorderBrush="#fff"
                                    BorderThickness="3"
                                    CornerRadius="15"
                                    Height="40">
                                <Button Name="btnDeleteProduct"
                                        Content="Удалить"
                                        BorderThickness="0"
                                        Foreground="#fff"
                                        Background="Transparent">
                                    
                                </Button>
                            </Border>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

Отображение товаров

Диаграмма связей

Ответы

Ответов пока нет.