1

WPFコントロール、またはその他の重要なオブジェクトを.NETアプリケーションの* .settingsファイルに永続化することは可能ですか?* .settingsファイルを使用すると、個々の設定ごとに任意のタイプを指定できるため、これは簡単だと思いました。残念ながら、機能していないようです。

私がやろうとしているのは、System.Windows.Controls.ListBoxをアプリケーションの*.settingsファイルに永続化することです。問題は、リストボックスインスタンスが実際に保存されていないことです。アプリケーションを再度実行しようとすると、ロードしようとするとnullになります。

これが私のListBoxインスタンスをロード/保存するために使用しているものです

    private void PersistListBoxToSettings(System.Windows.Controls.ListBox projectsListBox)
    {
        Properties.Settings.Default.ListBoxData = projectsListBox;
        Properties.Settings.Default.Save();
    }

    private void LoadProjectListBox()
    {
        projectsListBox = Properties.Settings.Default.ListBoxData; // Always null after application restart.
    }

* .settingsファイルをテストして、期待どおりに機能する単純な文字列を保存/ロードすることで、ファイルが機能することを確認しました。

私がやろうとしていることは本当に悪い考えですか?賢くしようとするのをやめ、ディスクへの適切なオブジェクトのシリアル化を使用する必要がありますか?

4

1 に答える 1

1

私の考えでは、.settingsファイルに保存するオブジェクトはシリアル化可能であり、ISerializableを実装している必要があります。コントロールにこれが実装されているとは思えません。このリンクは私の考えを裏付けているようです:

Bytes.comフォーラム

これを回避するためのリンクの提案として、ISerializableを実装し、[SettingsSerializeAs(SettingsSerializeAs.Binary)]を使用して、それを保存するためのラッパーを作成できる場合があります。

于 2009-06-18T15:12:30.717 に答える