2009-06-09 16 views
5

私は次のシナリオを持っている:年の月が含まれていSilverlightのコンボボックスとのSelectedItem

1リスト:のItemsSourceヶリストにバインドし、そのSelectedIndexを結合しているされて

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コンボボックス文字列であるプロパティ月、へ:私は分離コードから年に設定すると

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は選択項目として 'May'を表示しません。

これはSilverlight 3のバグですか? TelerikのRadComboBoxを使用するとうまく動作します。

乾杯、 フランシス

答えて

10

ご返信ありがとうございます。既にあなたの提案を試してみて、同じ結果を得る。しかし、私はちょうどホーマーシンプソンの瞬間(Dôh!)を持っていて、ComboBoxがItemsSourceを設定する前に月を設定していることがわかりました。

ただし、RadComboBoxがすべて正常に機能することは間違いありません。 ItemsSourceが変更されたときにSelectedItemを再度取得することがあります。

EDIT:

OK、私は文字通り驚きで私の椅子から落ちました。どうやらSL3には修正が必要なバグがまだ残っています。

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

そして、この処理が行われます:

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

は小さな違いを参照してください?

これは動作しません...以下にあなたの目をごちそうItemSource の前にXAMLのSelectedItemの前に設定する限り、すべてが世界で良好です。 Wowee、私はXAMLが直線的に解析されたことは全く知りませんでした!

+0

うまくいけば、彼らはSilverlight 4で修正されましたが、この回答を投稿してくれてありがとう。 – Aligned

+0

うわー、私たちはこれを理解しようと多くの時間を無駄にしました。答えを投稿してくれてありがとう! –

+1

@KevinこれはSL4では修正されていません。 – Rob

0

どのようにMonthプロパティを設定していますか?私はが2つの項目が同じかどうかをどう判断するのかよく分かりませんが、Months[4]ではなく「5月」に渡すと正しく動作しないことがわかりました。テストとして、あなたのリストの中の1つを渡して、それが問題を解決するかどうかを調べることができます。

関連する問題