Combobox不反映初始对象值

时间:2012-04-23 08:57:27

标签: c# wpf xaml wpf-controls

我有一个对象列表,以及一个Grid中的一些字段。当选择列表中的对象(lvInvoices)时,我更新了网格的数据绑定(lyDetailForm):

private void lvInvoices_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
  int index = lvInvoices.SelectedIndex;
  if (index != -1)
  {
    Invoice selectedInvoice = this.ListItems.ElementAt(index);
    lyDetailForm.DataContext = selectedInvoice;
    ((PdfViewer)this.pdfControlHost.Child).File = selectedInvoice.SourceFile.FullName;
  }
}

lyDetailForms中,我有几个控件。当我设置网格的DataContext时,文本控件会正确更新。然而,在我设置一次之前,组合框看起来是白色的;之后,当我更改所选项目时,它会正确更新。

<Grid Name="lyDetailForm" Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Column="2" Grid.Row="1" Margin="10">
  <TextBox Name="tbNif"  Grid.Column="1" Grid.Row="1" HorizontalAlignment="Left" Width="100" Margin="5" IsEnabled="{Binding SpId, Converter={x:Static local:SpSentToBooleanConverter.Instance}, ConverterParameter=NEGATE, FallbackValue=False}" Text="{Binding Nif,ValidatesOnExceptions=True,NotifyOnValidationError=True}" Validation.Error="OnEditBoxError"/>
  <ComboBox Name="cbType" Grid.Column="1" Grid.Row="2" Grid.RowSpan="2" Height="23" HorizontalAlignment="Left" Margin="5" VerticalAlignment="Top" Width="100" IsEnabled="{Binding SpId, Converter={x:Static local:SpSentToBooleanConverter.Instance}, ConverterParameter=NEGATE, FallbackValue=False}" Text="{Binding Type, Mode=TwoWay} ItemsSource="{Binding Types}"/>
</Grid>

顺便说一下,Types是来自同一invoice对象的静态属性,它返回一个字符串数组String[]。 Combobox项目是字符串。

有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您正在使用cbType ComboBox作为TextBox,这是错误的,删除Text="{Binding Type, Mode=TwoWay}绑定并将ComboBox所选项的绑定设置为类似SelectedItem={Binding SelectedType}的{​​{1}}表示当前选择的类型。