2012-01-19 14 views
1

私はコンボボックスのために、このコードをコーディング:Combobox:SelectedValueでデフォルト値を設定すると、comboBox_SelectionChangedがnullになるのはなぜですか?

<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; 
} 

私はデバッグしようとしましたが、私はこの順序で次の動作を得た:

私の財産の get {...}を呼び出し、その直後 SelectedValue="{Binding Path=CurrentStrings}"
  • 第一、:
  • availableStrings_SelectionChangedが呼び出され、availableStrings.SelectedValueがnull?

私のSelectedValueのは、ちょうどgetと呼ばれ、値が..私のコンボボックスが割り当てられていた前に、それはavailableStrings_SelectionChangedのように思える が呼び出された値オブジェクト指向を取得し、それが無い私にはバグのように聞こえるバインディング?

答えて

2

現在の値を取得するには、[現在の文字列に設定]を使用する必要があります。また、現在の文字列は配列ではいけません(単数である必要があります)。 SelectedValue TwoWayをバインドし、SelectionChangedを使用しないでください。

+0

これは実際には奇妙な動作です...! –

+0

実際には、新しい値を効果的に設定する前にいくつかのテストを行いたい場合は論理的です。 –

+1

何が奇妙ですか? SelectedValueにSetがなく、UIには値が格納されていないのでnullになっていると私は確信しています。 XAMLバインディングはエラーをスローしません。 – Paparazzi

関連する問題