2009-06-09 13 views
5

Ich habe folgendes Szenario:Silverlight ComboBox und SelectedItem

1 Liste, die die Monate des Jahres enthält:

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 Itemssource, deren gebunden an die Monate-Liste und deren SelectedIndex gebunden ist, auf das Grundstück Monat, die eine Zeichenfolge ist:

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}" /> 

Wenn ich das Jahr von dem Code-Behind, dh Monat = „May“ gesetzt, diese ordnungsgemäß an die ComboBox propagiert wird, und die gett Für Monat wird zugegriffen, aber die ComboBox zeigt nicht "Mai" als ausgewähltes Element.

Ich würde gerne wissen: Ist das ein Fehler in Silverlight 3? Es funktioniert gut, wenn ich die RadComboBox von Telerik benutze.

Cheers, Frances

Antwort

10

Vielen Dank für Ihre Antwort. Habe deinen Vorschlag bereits versucht und die gleichen Ergebnisse erhalten. Wie auch immer, ich hatte gerade einen Homer Simpson-Moment (Dôh!) Und fand heraus, dass ich den Monat vor der Einstellung der ItemsSource der ComboBox gesetzt habe.

Komisch, dass die RadComboBox alles richtig macht. Vielleicht ruft es das SelectedItem erneut ab, wenn sich die ItemsSource ändert.

EDIT:

OK, fiel ich nur buchstäblich meinen Stuhl mit Erstaunen aus. Anscheinend hat SL3 noch einige Bugs, die behoben werden müssen. Genießen Sie Ihre Augen auf der folgenden ...

Das funktioniert nicht:

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

Und das ist:

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

Siehe den winzigen Unterschied? Solange ich die ItemsSource vor das SelectedItem im XAML setze, ist alles in der Welt gut. Wow, ich wusste nie, dass XAML linear geparst wurde!

+0

Hoffentlich haben sie es in Silverlight 4 behoben, aber danke für das Posten dieser Antwort. – Aligned

+0

Wow, wir haben viel Zeit verschwendet, um das herauszufinden. Danke für die Antwort! –

+1

@Kevin Dies ist nicht in SL4 behoben. – Rob

0

Wie Sie die Month Eigenschaft setzen? Ich bin mir nicht sicher, wie die ComboBox bestimmt, ob zwei Elemente identisch sind oder nicht, aber ich konnte sehen, dass es nicht richtig funktionieren würde, wenn Sie "Mai" statt Months[4] übergeben. Als Test könnten Sie versuchen, eine der Strings aus Ihrer Liste zu übergeben, um zu sehen, ob das das Problem behebt oder nicht.

Verwandte Themen