2012-01-19 106 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

相关问题