2009-06-09 2 views
5

Tôi có các tình huống sau:Silverlight ComboBox và SelectedItem

1 Danh sách chứa các tháng trong năm:

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 mà ItemsSource được ràng buộc với tháng-list và có SelectedIndex là ràng buộc đến tài sản theo tháng, mà là một chuỗi:

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

Khi tôi đặt năm từ codebehind, tức là tháng = "tháng", điều này được đúng truyền vào ComboBox, và gett er cho Tháng được truy cập, nhưng ComboBox không hiển thị 'Có thể' vì mục được chọn.

Tôi muốn biết: đây có phải là lỗi trong Silverlight 3 không? Nó hoạt động tốt khi tôi sử dụng RadComboBox từ Telerik.

Chúc mừng, Frances

Trả lời

10

Cảm ơn bạn đã trả lời. Đã thử đề xuất của bạn rồi và nhận được kết quả tương tự. Tuy nhiên, tôi đã có một khoảnh khắc Homer Simpson (Dôh!) Và phát hiện ra rằng tôi đã thiết lập một tháng trước khi ComboBox đặt nó là ItemsSource.

Lạ thay, tuy nhiên, RadComboBox làm mọi thứ chính xác. Có lẽ nó lấy lại SelectedItem một lần nữa khi các ItemsSource thay đổi.

EDIT:

OK, tôi chỉ theo nghĩa đen rơi xuống ghế của tôi với sự ngạc nhiên. Rõ ràng, SL3 vẫn có một số lỗi cần sửa chữa. Feast mắt của bạn về sau ...

này không hoạt động:

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

Và điều này:

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

Thấy sự khác biệt nhỏ? Miễn là tôi đặt ItemsSource trước SelectedItem trong XAML, tất cả đều tốt trên thế giới. Wowee, tôi chưa bao giờ biết XAML được phân tích cú pháp một cách tuyến tính!

+0

Hy vọng rằng chúng đã được khắc phục trong Silverlight 4, nhưng cảm ơn bạn đã đăng câu trả lời này. – Aligned

+0

Chà, chúng ta lãng phí rất nhiều thời gian để tìm ra điều này. Cảm ơn bạn đã đăng câu trả lời! –

+1

@Kevin Đây không phải là cố định trong SL4. – Rob

0

How are you thiết lập Month bất động sản? Tôi không chắc cách ComboBox xác định xem hai mục có giống nhau hay không, nhưng tôi có thể thấy rằng nó không hoạt động chính xác nếu bạn chuyển vào "Tháng Năm" thay vì Months[4]. Là một thử nghiệm, bạn có thể thử chuyển một trong các chuỗi từ danh sách của bạn để xem điều đó có khắc phục được sự cố hay không.