2009-06-09 3 views
5

ho il seguente scenario:Silverlight ComboBox e SelectedItem

1 List che contiene i mesi dell'anno:

public List<String> Months 
{ 
    get 
    { 
     return m_Months; 
    } 
} 


m_Months = new List<String>(); 

for (int i = 1; i <= 12; i++) 
{ 
    DateTime date = new DateTime(1900, i, 1); 
    m_Months.Add(date.ToString("MMM")); 
} 

1 ComboBox cui ItemsSource è legato ai mesi-list e la cui SelectedIndex è legato alla proprietà mese, che è una stringa:

public string Month 
     { 
      get 
      { 
       return m_Month; 
      } 
      set 
      { 
       if (value != m_Month) 
       { 
        m_Month = value; 
        NotifyPropertyChanged("Month"); 
       } 
      } 
     } 

<ComboBox SelectedItem="{Binding Month, Mode=TwoWay}" ItemsSource="{Binding Months}" /> 

Quando ho creato l'anno a partire dalla codebehind, cioè Mese = "maggio", questo è correttamente propagate al ComboBox, e la gett si accede a er per Month, ma il ComboBox non mostra "May" come elemento selezionato.

Mi piacerebbe sapere: si tratta di un bug in Silverlight 3? Funziona bene quando uso RadComboBox da Telerik.

Cheers, Frances

risposta

10

Grazie per la risposta. Ho già provato il tuo suggerimento e ottenere gli stessi risultati. Tuttavia, ho appena avuto un momento Homer Simpson (Dôh!) E ho scoperto che ho impostato il mese prima che il ComboBox ne impostasse ItemsSource.

Strano, tuttavia, che RadComboBox faccia tutto correttamente. Forse recupera nuovamente l'oggetto SelectedItem quando viene modificata la sorgente di ItemsSource.

EDIT:

OK, ho appena letteralmente caduto dalla sedia con stupore. Apparentemente, SL3 ha ancora alcuni bug che devono essere risolti. Rifatevi gli occhi con il seguente ...

Questo non funziona:

<ComboBox SelectedItem="{Binding Month, Mode=TwoWay}" ItemsSource="{Binding Months}" /> 

E questo:

<ComboBox ItemsSource="{Binding Months}" SelectedItem="{Binding Month, Mode=TwoWay}" /> 

Vedere la piccola differenza? Finché imposto l'ItemSource prima dello l'oggetto Selected in XAML, tutto va bene nel mondo. Wowee, non ho mai saputo che XAML fosse analizzato linearmente!

+0

Speriamo di averlo risolto in Silverlight 4, ma grazie per aver postato questa risposta. – Aligned

+0

Wow, abbiamo perso un sacco di tempo cercando di capirlo. Grazie per aver postato la risposta! –

+1

@Kevin Questo non è stato risolto in SL4. – Rob

0

Come stai impostando la proprietà Month? Non sono sicuro di come lo ComboBox determini se due elementi siano uguali o meno, ma ho notato che non funzionava correttamente se si passava "Maggio" anziché Months[4]. Come test, potresti provare a passare una delle stringhe dall'elenco per vedere se questo risolve il problema o meno.