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