8
votes

Combobox SelectedItem Binding ne met pas à jour

Je suis un peu perplexe: Cela fonctionne:

public TblProduktSoorten SelectedProduct
    {
        get { return _selectedPSoort; }
        set
        {
            if (_selectedPSoort != value)
            {
                _selectedPSoort = value;
                OnPropertyChanged("SelectedProduct");
            }
        }
    }


7 commentaires

Snowbear est fatigué de ne fonctionne pas motif. Save Snowbear! Dites-lui ce qui ne fonctionne pas dans votre cas!


Désolé. Je suis allé trop vite. Toutefois, le ComboBox for the SelectRol affiche correctement la propriété lorsque la propriété obtient une nouvelle valeur (à partir d'un événement sélectionné dans une liste de liste), avec presque exactement le même code, la sélection sélectionnéeSoort Combobox n'affiche jamais rien. L'optionSource fonctionne, le SELECTEDITEM est rempli mais ne s'affiche pas dans le ComboBox. Si ça a du sens...


Vous n'avez pas besoin d'utiliser le mode = Twoway pour l'itemSource également (comme dans l'échantillon de travail)?


Non, a changé toutes les choses possibles, ne change pas beaucoup.


Êtes-vous sûr que votre itemSource contient des objets de type TBLRODUKTSOORTEN? Parce que sinon vous n'obtiendrez aucune erreur sur la liaison sélectionnée.


Mon objetSource est Observablecollection Allsoorten = Nouvelle Observablecollection (Prep.Service.getall ());


Les liaisons ne fonctionnent que des propriétés, pas des champs ( Stackoverflow.com/questions/842575/... )


7 Réponses :


3
votes

Essayez d'utiliser l'élément non sélectionné mais le chemin de la valeur Cherchez l'exemple de code

public ObservableCollection<Project> Projects
{
    get { return projects; }
    set
    {
        projects = value;
        RaisePropertyChanged("Projects");
    }
}


2 commentaires

IssynchronizedWithCurrentItem = "vrai" m'a aidé. THX


@Rdv Ouugh Cela a résolu mon problème aussi! Pour moi, la mise à jour a fonctionné, mais seulement à chaque autre sélection ! Je ne sais pas ce que cette étrangeté a causé. Mais ajouter issynchronizedwithcurrentItem = "vrai" , résolu ceci et la mise à jour de liaison fonctionne avec chaque mise à jour maintenant!



6
votes

Ceci pourrait être lié au fait que Apparemment, l'ordre d'attributs importe , dans votre deuxième cas, le itemsSource et SELECTELTEMITEM Les déclarations sont échangées.


1 commentaires

Je dois dire que je pense que c'est une non-sens totale pour un composant correctement testé. C'est May être techniquement possible (je ne suis toujours pas convaincu de cela) mais vous devriez jamais à vous soucier de cela pour les contrôles Microsoft.



12
votes

Combobox à l'intérieur d'un DataGrid?

Si la combinaison est dans un DataGrid Vous devez ajouter ceci: xxx

Voir ceci: https://stackoverflow.com/a/5669426/16940


1 commentaires

Même chose pour d'autres contrôles aussi comme radiobutton . Je ne sais pas les critères exacts ou pourquoi cela est nécessaire. Peut-être que quelque chose à voir avec la hiérarchie des arbres visuels ou quelque chose comme ça.



2
votes

Je ne sais pas si vous l'avez déjà réparé, mais j'ai rencontré le même problème aujourd'hui. Il a été corrigé en veillant à ce que la collection de SEXEYITEMS était une observablecollection.


1 commentaires

J'ai essayé toutes les autres réponses à rien. Cette réponse a fonctionné pour moi. Court et doux.



3
votes

Si vous définissez la propriété sélectionnéeProduite lorsque le fichier sélectionné est modifié dans le gestionnaire d'événements modifié de la propriété, vous devez définir cette propriété de manière asynchrone.

private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (e.PropertyName == "SelectedProduct")
        App.Current.Dispatcher.InvokeAsync(() => SelectedProduct = somevalue);
}


0 commentaires

1
votes

Mon problème a été causé par mon cerveau fatigué. Même symptôme, peut-être que cela vous frappera pour voir votre problème.

Réglage de la sélection sélectionnée doit recevoir un élément de la liste !! (Duhh) Normalement, cela se produit naturellement mais j'avais un cas, j'ai eu un «rôle» à partir d'un autre service (même type d'objet) et j'essayais de la définir et d'attendre que le ComboBox change! ; (

au lieu de - xxx

N'oubliez pas de le faire - xxx


1 commentaires

fait cette même erreur! a déjà eu cette idée que cela puisse être la racine de racine au début, toujours fouillé sur le Web pendant une heure jusqu'à ce que je voyais votre réponse, lol



0
votes

Je pense que ce problème est causé par le type itemSource et SELECTEYItem est MitchMatched .

Par exemple, si l'itemSource est lié à une liste d'int et que le SELECTEDITEM est lié à une chaîne . Si vous définissez l'élément sélectionné sur NULL ou String vide, le ComboBox ne peut pas savoir quel élément est sélectionné. Donc, la combinaison ne montrera rien.


0 commentaires