Domanda

È possibile mantenere un controllo WPF o qualsiasi altro oggetto non banale in un file * .settings in un'applicazione .NET? Ho pensato che sarebbe stato facile dal momento che il file * .settings mi consente di specificare un tipo atrbitrario per ogni singola impostazione, purtroppo non sembra funzionare per me.

Quello che sto cercando di fare è di persistere un System.Windows.Controls.ListBox nel file * .settings della mia applicazione. Il problema è che la mia istanza di listbox non viene effettivamente salvata. Quando vado di nuovo ad eseguire la mia applicazione, è solo null quando vado a caricarla.

Ecco cosa sto usando per caricare / salvare la mia istanza 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.
    }

Ho testato il mio file * .settings per assicurarmi che funzionasse anche salvando / caricando una semplice stringa, che funzionava come previsto.

Quello che sto cercando di fare è davvero una pessima idea? Devo smettere di cercare di essere intelligente e usare la serializzazione degli oggetti corretta su disco?

È stato utile?

Soluzione

La mia convinzione è che gli oggetti che stai salvando in un file .settings debbano essere serializzabili, implementando ISerializable. Dubito che i controlli abbiano implementato questo. Questo link sembra confermare i miei pensieri:

Forum Bytes.com

Potresti essere in grado di creare un wrapper per salvarlo, implementare ISerializable e utilizzare [SettingsSerializeAs (SettingsSerializeAs.Binary)] come suggerimenti di collegamento per aggirare il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top