2012-01-19 157 views
1

我這個代碼代碼爲我的組合框:Combobox:爲什麼comboBox_SelectionChanged在爲SelectedValue設置默認值時爲空?

<ComboBox ItemsSource="{Binding Path=AvailableStrings}" SelectedValue="{Binding Path=CurrentStrings}" Name="availableStrings" SelectionChanged="availableStrings_SelectionChanged"/> 

然後在代碼隱藏我:

private void availableStrings_SelectionChanged(object sender, SelectionChangedEventArgs e) 
{ 
    string currentText = availableStrings.SelectedValue as string; 
} 

我試圖調試,我得到這個順序以下行爲:

  • 1st,SelectedValue="{Binding Path=CurrentStrings}"調用我的財產的get {...},並在此之後:
  • availableStrings_SelectionChanged被調用,availableStrings.SelectedValue爲空?!?

我的SelectedValue綁定只是叫get並獲得價值OO 好像availableStrings_SelectionChanged的價值已經被分配了我的組合框..之前被調用,這聽起來像我的錯誤沒有?

回答

2

您應該使用Set on CurrentStrings來獲取當前值,而CurrentStrings不應該是一個數組(它應該是單數)。綁定SelectedValue TwoWay並不使用SelectionChanged。

+0

這真的是一個奇怪的行爲...! –

+0

事實上,如果你想在有效設置新值之前做一些測試,這可能是合乎邏輯的 –

+1

奇怪的是什麼?我很確定SelectedValue沒有Set,所以UI沒有地方存儲值,所以它是空的。 XAML綁定不會引發錯誤。 – Paparazzi

相關問題