Bonjour
Après quelques temps (deux ans quand même), je me remets au .NET, WPF, etc., et mes connaissances dans ce domaines sont un peu rouillée (elle ne sont déjà pas énormes...).
L'application en cours de développement est un programme devant permettre le contrôle d'un appareil photo
j'ai le code XAML suivant :
Parameters.ISOSpeedList est une liste de d'objet implémentant IParameter, une classe toute simple contenant de champ, un uint et un string (DisplayValue)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <ComboBox ItemsSource="{Binding Parameters.ISOSpeedList}" SelectedItem="{Binding Path=SelectedISO, UpdateSourceTrigger=PropertyChanged}" DisplayMemberPath="DisplayValue" />
du côté C# :
Le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public class MainViewModel : DependencyObject { //... public IParameters Parameters { get; set; } public IParameter SelectedISO { get { return (IParameter)GetValue(SelectedISOProperty); } set { SetValue(SelectedISOProperty, value); } } public static readonly DependencyProperty SelectedISOProperty = DependencyProperty.Register("SelectedISO", typeof(IParameter), typeof(MainViewModel), new UIPropertyMetadata(null)); //... }
Lorsque je sélectionne un élément dans ma combobox, la propriété SelectedISO est bien mise à jour. Mais si je modifie directement le paramètre en question directement sur l'appareil (ce qui déclenche un évènement qui met à jour SelectedISO, l'élément sélectionnée dans la ComboBox n'est pas mis à jour.
Qu'est-ce qui n'est pas correct ?
Remarque : tout fonctionne parfaitement avec une liste de string à la place d'une liste de IParameter
Partager