J'ai un ComboBox hébergé dans un TabItem. Lorsque je sélectionne un élément de la zone de liste déroulante, un ListView approprié est rempli. Lorsque je m'éloigne du tabItem et puis revenez, le SelectedItem dans le ComboBox est vide, mais le ListView reste correctement rempli. L'événement SelectedItemChanged n'a pas été déclenché.ComboBox SelectedItem change lorsque le parent TabItem perd le focus
Pourquoi l'élément sélectionné n'apparaît-il pas dans la zone de liste déroulante lorsque je reviens l'afficher?
Certains code: Dans la vue ---
<ComboBox x:Name="customersComboBox"
ItemsSource="{Binding Path=Customers }"
SelectedItem="{Binding Path=SelectedCustomer, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Code"
IsEditable="False">
Dans le ViewModel -
public ICustomerInfo SelectedCustomer
{
get { return (ICustomerInfo)GetValue(SelectedCustomerProperty); }
set { SetValue(SelectedCustomerProperty, value); }
}
// Using a DependencyProperty as the backing store for SelectedCustomer. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SelectedCustomerProperty =
DependencyProperty.Register("SelectedCustomer", typeof(ICustomerInfo), typeof(OrdersViewModel), new UIPropertyMetadata(null, SelectedCustomerChanged));
private static void SelectedCustomerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d==null)
{
return;
}
OrdersViewModel viewModel = d as OrdersViewModel;
if (e.NewValue == null)
{
return;
}
ICustomerInfo selectedCustomer = e.NewValue as ICustomerInfo;
viewModel.SelectedCustomerChanged(selectedCustomer);
}
private void SelectedCustomerChanged(ICustomerInfo selectedCustomer)
{
if (selectedCustomer != null)
{
if (!GetOrders())
{
return;
}
}
}
Je suggérerais de poster du code. Bien qu'il puisse sembler que la réponse est évidente pour les gens sur SO, ce n'est pas le cas. Je sais que c'est généralement difficile avec les grands projets, surtout si vous n'avez * aucune idée * où l'erreur est. –