Как сделать button в listbox независимой от других для извлечения price из MSSQL server в WPF?
Есть колонки в textbox, данные которых извлечены из SQL server и также есть кнопка button, но которая как я понимаю просто копируется, так вот хочу узнать как сделать кнопку to basket независимой и при нажатии выводить именно в MessageBox price, нужно это для того чтобы в дальнейшем price заносить в корзину.
MainWindow.xaml здесь Stakpanel находится внутри listbox, там всё хорошо, кроме кнопки которая просто копируется.
<StackPanel Width="250" Height="370" Margin="40,0,0,0" Background="#121212">
<Image Source="{Binding Path=Image}" Width="250" Height="200" Stretch="Fill"/>
<TextBlock FontSize="18" Text="{Binding Path=Name}" Foreground="#fff" Margin="15,15,0,0"/>
<TextBlock FontSize="16" Text="{Binding Path=ShortText}" Foreground="#9C9999" Margin="15,8,15,0" TextWrapping="Wrap" Height="40"/>
<Grid Margin="15,8,15,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock FontSize="14" Text="{Binding Path=Quantity}" Foreground="#fff" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock FontSize="18" Text="{Binding Path=Price}" Foreground="#fff" Grid.Column="1" Margin="15,0,0,0" HorizontalAlignment="Right"/>
</Grid>
<Button DataContext="{Binding price}" Content="To basket" FontSize="16" Background="#046902" Width="100" Height="30" Foreground="#fff" Margin="0,10,0,0" HorizontalAlignment="Center" Click="ToBasket"/>
</StackPanel>
этот код находится в самом MainWindow
private void ToBasket(object sender, RoutedEventArgs e)
{
SqlCommand command = new SqlCommand("SELECT price FROM products", sqlConnection);
sqlConnection.Open();
SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
object name = reader.GetValue(0);
string name_category = Convert.ToString(name);
MessageBox.Show(name_category);
}
sqlConnection.Close();
}
а здесь использую ViewModel, как бы от сюда беру только Price и всё.
using (SqlConnection Connection = new SqlConnection(sqlConnection))
{
Connection.Open();
SqlCommand command = new SqlCommand(sqlItems, Connection);
SqlDataReader reader = command.ExecuteReader();
Items = new ObservableCollection<Item>();
if (reader.HasRows)
{
while (reader.Read())
{
byte[] image = (byte[])(reader.GetValue(0));
object quantity = reader.GetValue(3);
string quantity_item = Convert.ToString(quantity);
object price = reader.GetValue(4);
string price_item = Convert.ToString(price + " $");
object shortdis = reader.GetValue(2);
string shortdis_item = Convert.ToString(shortdis);
object name = reader.GetValue(1);
string name_item = Convert.ToString(name);
object creator = reader.GetValue(5);
string creator_item = Convert.ToString(creator);
object year = reader.GetValue(6);
string year_item = Convert.ToString(year);
object materials = reader.GetValue(7);
string materials_item = Convert.ToString(materials);
Items.Add(new Item
{
Image = image,
Name = name_item,
ShortText = shortdis_item,
Quantity = quantity_item,
Price = price_item,
Creator = creator_item,
Year = year_item,
Materials = materials_item
});
}
}
reader.Close();
};
Долго думал, но понять не могу, как сделать кнопку которая отвечает за свой блок