Silverlight应用程序代码中未处理的错误:4004 System.Collections.Generic.KeyNotFoundException

时间:2011-09-23 12:49:16

标签: silverlight-4.0 datagrid user-controls

我以非常奇怪的方式收到此错误。我已经能够隔离它,我知道是什么导致它,但我不知道为什么。

这种情况:我有一个ChildWindow,它包含一个TabControl,它包含两个UserControl,它们都包含一个像这样的数据网格,导致未处理的错误:

<sdk:DataGrid x:Name="PersonEmailDataContainer" AutoGenerateColumns="False" Height="119" HorizontalAlignment="Left" Margin="12,39,0,0" VerticalAlignment="Top" Width="736"
  ItemsSource="{Binding PagedListOfPersonEmail, Mode=TwoWay}" 
  ColumnHeaderStyle="{StaticResource ColBinding}" 
  SelectedItem="{Binding SelectedPersonEmail, Mode=TwoWay}" 
  IsReadOnly="{Binding PersonEmailDataContainerIsReadOnly, Mode=TwoWay}">
  <sdk:DataGrid.Columns>
      <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True"
         CanUserSort="True" Width="Auto" />
      <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" 
         CanUserSort="True" Width="20*"
         Binding="{Binding Email, Mode=TwoWay}" 
         Header="{Binding ConverterParameter=HdrEmail, Converter={StaticResource Localization}, Source={StaticResource Localization}}"  />
      <sdk:DataGridTextColumn CanUserReorder="True" CanUserResize="True" 
         CanUserSort="True" Width="20*"
         Binding="{Binding WebSite, Mode=TwoWay}" 
         Header="{Binding ConverterParameter=HdrWebSite, Converter={StaticResource Localization}, Source={StaticResource Localization}}"  />
  </sdk:DataGrid.Columns>
        <!-- more columns -->
    </sdk:DataGrid>

我通过删除第一列解决了这个问题,第一列只是一个空白列。它没有显示数据,没有绑定,甚至没有要显示的标题。有什么想法导致错误?

1 个答案:

答案 0 :(得分:1)

如果你有一个绑定到ItemsSource的DataGrid,那么你就不能拥有一个没有绑定的sdk:DataGridTextColumn。您可以使用sdk:DataGridTemplateColumn。此列类型不需要绑定。