Попробуйте выполнить следующее:
<ListBox x:Name="lbProductList"
ItemsSource="{Binding}"
DisplayMemberPath="ProductName"
SelectedValuePath="ProductId"
/>
Установите текст данных списка со списком товаров:
lbProductList.DataContext = myProductList;
Событием лучше будет определить ViewModel с productList и выбранным продуктом.,Вы также можете привязать SelectedValue:
SelectedValue="{Binding SelectedProduct, Mode=TwoWay}"
Чтобы отобразить выбранный продукт, вы можете сделать с привязкой элемента: