コンテンツが WPF Toolkit Datagrid であるタブ コントロールがあります。タブ コントロールはディクショナリにバインドされています (以下のコードの Model.Radios)。ディクショナリ エントリの値は、CSLA BusinessListBase クラスから派生したカスタム リストです。すべてうまくいきますが、データグリッドのセルをクリックすると、特定のクラスがシリアル化されているとマークされていないという例外が発生し続けます。最初はリストクラスで、次にリストアイテムを構成するクラスについて不満を言いました。リストの項目は約 6 クラスの深さのクラス階層にあるため、いくつかのクラスをシリアライズ可能としてマークした後、これが必要かどうか疑問に思い始めました。データグリッドを使用してからしばらく経ちましたが、最後に使用したときにこれに遭遇せず、うまく機能したことを誓います。足りないものはありますか?おそらく、これはデータ グリッドではなく、CSLA と関係があるのでしょう...よくわかりません。
<TabControl Grid.Row="1" Name="myTabControl" ItemsSource="{Binding Model.Radios}">
<TabControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding (collections:DictionaryEntry.Key)}"></TextBlock>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<tk:DataGrid ItemsSource="{Binding (collections:DictionaryEntry.Value)}" AutoGenerateColumns="False" >
<tk:DataGrid.Columns>
<tk:DataGridTextColumn Header="Number" Binding="{Binding PresetNumber}" IsReadOnly="True" Width="Auto"/>
<tk:DataGridTextColumn Header="Identifier" Binding="{Binding Identifier}" />
<tk:DataGridTextColumn Header="Frequency" Binding="{Binding Frequency}" />
</tk:DataGrid.Columns>
</tk:DataGrid>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>