2009-06-09 8 views
5

나는 다음과 같은 시나리오가 : 올해의 달 포함실버 라이트 콤보와 selectedItem가

1 목록 : 누구의 ItemsSource를 달 목록에 바인딩

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 콤보를 누구의 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}" /> 

가이 제대로 콤보 상자로 전달되고, GETT : 문자열 해당 부동산의 달에 어제는 액세스했지만 ComboBox는 선택한 항목으로 '5 월'을 표시하지 않습니다.

알고 싶습니다. Silverlight 3의 버그입니까? Telerik에서 RadComboBox를 사용할 때 제대로 작동합니다.

건배, 프랜시스

답변

10

답장을 보내 주셔서 감사합니다. 이미 귀하의 제안을 시도하고 동일한 결과를 얻을. 그러나 방금 Homer Simpson 순간 (Dôh!)을 보았고 ComboBox가 ItemsSource를 설정하기 전에 Month를 설정한다는 것을 알았습니다.

그러나 이상하게도 RadComboBox가 모든 것을 올바르게 처리합니다. 어쩌면 ItemsSource가 변경 될 때 SelectedItem을 다시 검색합니다.

편집 :

OK, 말 그대로 놀라움 내 의자에서 떨어졌다 단지. 분명히 SL3에는 아직 수정이 필요한 몇 가지 버그가 있습니다.

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

을 그리고 이것은 않습니다 :

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

이 작은 차이를 볼

이 작동하지 않습니다 ... 다음에 똑똑히? ItemSource 전에 SelectedItem을 XAML로 설정하면 모든 것이 세계에서 잘됩니다. Wowee, 나는 XAML이 선형 적으로 파싱 된 것을 결코 알지 못했다!

+0

바라건대 그들은 Silverlight 4에서 수정되었지만이 답변을 게시 해 주셔서 감사합니다. – Aligned

+0

와우, 우리는 이것을 알아 내려고 많은 시간을 낭비했습니다. 답변을 게시 주셔서 감사합니다! –

+1

@Kevin 이것은 SL4에서 수정되지 않았습니다. – Rob

0

당신은 어떻게 Month 속성을 설정하는? 이 두 항목이 같은지 아닌지를 어떻게 결정하는지 잘 모르겠습니다 만, Months[4] 대신 "5 월"에 전달하면 제대로 작동하지 않을 수 있습니다. 테스트에서 문제가 해결되는지 여부를 확인하기 위해 목록에있는 문자열 중 하나를 전달할 수 있습니다.