0

コンテンツが 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>
4

1 に答える 1

0

オブジェクト グラフ内の各クラスは、[Serializable]すべての基本クラスを含めて としてマークする必要があります (これは、基本クラスの CSLA ソース コードを調べることで確認できます。これらはすべてシリアル化可能です)。CSLA はグラフ全体を WPF アプリにシリアル化しようとしていますが、そこにない場合は壊れます。

于 2014-01-10T17:42:32.277 に答える