Я играю с этим уже 1 день, и я собираюсь сдаться.По сути, дело в том, что я получил ListBox, содержащий пользовательские объекты (продукты), которые поступают из базы данных.Заполнение и сортировка работает, но получение значений из выбранного элемента отсутствует.
Класс продукта:
public class Product {
//properties
public int ID { get; set; }
public String Name { get; set; }
public String Info { get; set; }
public int Stock { get; set; }
public float Price { get; set; }
}
XAML из ListBox в frmUser:
<Window.Resources>
<DataTemplate x:Key="listBoxTemplate">
<StackPanel Margin="4">
<DockPanel >
<TextBlock FontWeight="Bold" Text="Product ID: " DockPanel.Dock="Left" Margin="5,0,10,0" Foreground="White" FontSize="13" />
<TextBlock Text="{Binding productId}" Foreground="White" />
</DockPanel>
<DockPanel >
<TextBlock FontWeight="Bold" Text="Naam: " DockPanel.Dock="Left" Margin="5,0,10,0" Foreground="White" FontSize="13"/>
<TextBlock Text="{Binding naam}" />
</DockPanel>
<DockPanel >
<TextBlock FontWeight="Bold" Text="Omschrijving: " DockPanel.Dock="Left" Margin="5,0,10,0" Foreground="White" FontSize="13"/>
<TextBlock Text="{Binding omschrijving}" />
</DockPanel>
<DockPanel >
<TextBlock FontWeight="Bold" Text="Voorraad: " DockPanel.Dock="Left" Margin="5,0,10,0" Foreground="White" FontSize="13"/>
<TextBlock Text="{Binding voorraad}" />
</DockPanel>
<DockPanel >
<TextBlock FontWeight="Bold" Text="Prijs: " DockPanel.Dock="Left" Margin="5,0,10,0" Foreground="White" FontSize="13"/>
<TextBlock Text="{Binding prijs}" />
</DockPanel>
</StackPanel>
</DataTemplate>
</Window.Resources>
Ипривязка выполняется, когда пользователь щелкает, чтобы заполнить ListBox:
private void fillDataGrid(object sender, RoutedEventArgs e)
{
try
{
BindingOperations.ClearAllBindings(lboxProducts);
dataset = dbWebservice.getDataFromTable(selectedTable);
lboxProducts.ItemsSource = dataset.Tables[selectedTable].DefaultView;
countProducts = 0;
setLabels("0", "0.0");
btnSort.IsEnabled = true;
btnBuy.IsEnabled = true;
}
catch (Exception ex)
{
logger.WriteLine(applicationName, ex.Message);
}
}

Теперь, когда пользователь нажимает кнопку «Купить» на кнопке, которую я хочу выбрать (еслиЛюбое выбрано) для размещения в списке или что-то еще, и зачитать ЦЕНУ.Так что я могу использовать это значение, чтобы назначить метку общей цены.Если пользователь нажимает еще раз, снова прочитайте цену из выбранного элемента и сложите ее с предыдущим пунктом.Просто так.Но я не могу получить какую-либо сюрприз, получить значения, «хранящиеся» в элементах списка, которые в основном являются объектами «Продукта».
В самом конце я хочу использовать «купленные и выбранные» предметы, для которых используются их идентификаторы.сохранить обратно в базу данных в tblOrders, поэтому мне нужны значения ID и PRICE.
Мое решение было примерно таким:
ClassObjects.Product product = (ClassObjects.Product)lboxProducts.SelectedItem;
float price = product.Price;
//go on and sum or store the price blabla
Но выдает ошибку, которую не может преобразовать изDataRowView для ClassObjects.Product ...
Спасибо за любую помощь!