Исправить DataContext для ListView WPF
Есть 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>
Источник: Stack Overflow на русском