2013-07-16 4 views
6

Questa è la situazione di partenza:WPF ComboBox: Articolo errato viene visualizzato

XAML:

<ComboBox Grid.Row="0" 
      Grid.Column="1" 
      Margin="0,3" 
      HorizontalAlignment="Stretch" 
      DisplayMemberPath="DisplayText" 
      ItemsSource="{Binding ObjectSource}" /> 

ViewModel:

public Collection<MyObjects> ObjectSource 
{ 
    get 
    { 
     return this.objectSource; 
    } 

    set 
    { 
     this.SetProperty(ref this.objectSource, value); 
    } 
} 

miei oggetti contiene un nome (stringa), valida dal (dateTime) e un displayText (stringa solo get) che combina il nome e valido per la visualizzazione.

In questa situazione facile sono in grado di aprire la casella combinata di vedere tutte le voci, dopo aver selezionato uno anche visualizzare il displaytext proprio all'interno del combobox. Ora apro nuovamente l'area a tendina e seleziono un'altra voce. Il risultato è che l'elemento slittato è stato commutato (come si può vedere l'elemento highligth quando si apre di nuovo la voce del menu a discesa). Ma l'oggetto visualizzato all'interno della casella combinata non viene modificato, c'è ancora il DisplayText della prima selezione.

Screenshot of the result situation

Qualcuno ha un'idea per me il motivo per cui la casella combinata non aggiorna? Grazie in anticipo

Modifica: Grazie a tutti per il loro aiuto. Il problema era un buggy overriding di Equals.

+0

hai scavalcato Equals? – blindmeis

+0

ho controllato il tuo problema ma nel mio caso tutto funziona perfettamente ... può essere un problema che in qualche modo la tua casella combinata si aggiorna o potrebbe essere la tua raccolta ... basta controllare usando i punti di interruzione .. – loop

+0

assolutamente ogni cosa sta funzionando bene sul mio sistema. – Betty

risposta

1

solo per completezza :)

è necessario controllare i Equals() override e assicurarsi che quello non buggy. Ho avuto lo stesso problema con una listbox in questi giorni.

+0

btw sentitevi liberi di postare entrambi i metodi uguali (buoni e cattivi) nel mio post. – blindmeis