2009-06-09 85 views
5

我有以下情形:其中包含了一年中的月份Silverlight的組合框和的SelectedItem

1清單:

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組合框,其ItemsSource綁定到數月的列表,其SelectedIndex的是綁定的財產一個月,這是一個字符串:

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

當我從代碼隱藏,即月=「五一」設定年份,這是正確地傳送到ComboBox,和GETT呃月訪問,但組合框不會顯示'五月',因爲它是選定的項目。

我想知道:這是Silverlight 3中的錯誤嗎?當我使用Telerik的RadComboBox時,它工作正常。

乾杯, 弗朗西斯

回答

10

感謝您的回覆。嘗試過你的建議,並獲得相同的結果。不過,我剛剛做了一個荷馬辛普森時刻(Dôh!),發現我在ComboBox設置ItemsSource之前設置了Month。

不過,奇怪的是,RadComboBox能正確處理所有事情。也許它在ItemsSource更改時再次檢索SelectedItem。

編輯:

OK,我只是從字面上跌下我的椅子驚奇。顯然,SL3仍然有一些需要修復的bug。宴席上下面你的眼睛......

這不起作用:

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

而且這並不:

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

見微小的區別?只要我在XAML中的SelectedItem中設置ItemsSource 之前,一切都很好。 Wowee,我從來不知道XAML是線性分析的!

+0

希望他們有它在Silverlight 4中修復,但感謝張貼這個答案。 – Aligned 2010-04-26 18:12:15

0

你是如何設置Month財產?我不確定ComboBox如何確定兩個項目是否相同,但我可以看到,如果您傳遞「May」而不是Months[4],它將無法正常工作。作爲一個測試,你可以嘗試從你的列表中傳入一個字符串,看看是否能解決問題。