Возможно, вы захотите попробовать изолированное хранилище файлов , где вы можете сохранить / загрузить свои настройки на локальный жесткий диск. Сделать это очень просто, всего несколько строк кода.
я думаю, что у Silverlight есть какое-то утверждение, которое ведет себя как Exec
Нет, это не так:)
Редактировать: хорошо, вот руководство о том, как можно применить локально сохраненные настройки к элементам пользовательского интерфейса.
Прежде всего, определитесь с интерфейсом, который будут реализовывать ваши настраиваемые элементы управления:
public interface IMySettableSettingsControl
{
Dictionary<string, object> RetrieveSettings();
void ApplySettings(Dictionary<string, object> settings);
}
Теперь добавьте этот интерфейс к вашим элементам управления, который сохранит их настройки локально:
public MyControl : IMySettableSettingsControl
{
public void ApplySettings(Dictionary<string, object> settings)
{
if (settings.Key.Contains("TextboxContents"))
someTextBox.Text = (string) settings["TextboxContents"];
if (settings.Key.Contains("Height"))
this.Height = (double) settings["Height"];
((IMySettableSettingsControl) someChildControl).ApplySettings( (Dictionary<string, object>) settings["MyChildControl"])
}
public Dictionary<string, object> RetrieveSettings()
{
Dictionary<string, object> localSettings = new Dictionary<string, object>();
localSettings.Add("Height", this.Height);
localSettings.Add("TextboxContents", someTextBox.Text);
localSettings.Add("MyChildControl", ((IMySettableSettingsControl) someChildControl).RetrieveSettings();
}
}
Конечно, вы можете получить столько фантазии, сколько захотите - то, что я иллюстрировал выше, является просто примером. В прошлом я делал, чтобы мой файл MainPage.cs загружал настройки из изолированного хранилища, а затем передавал словарь в конструктор каждого создаваемого им контроллера, каждый контроллер затем передавал его каждому создаваемому представлению. Чтобы сохранить настройки, я обрабатываю событие выхода из приложения:
Application.Current.Exit += new EventHandler(Current_Exit);
и затем в обработчике:
private void Current_Exit(object sender, EventArgs e)
{
Dictionary<string, object> settings = new Dictionary<string, object>();
//call each UI control or controller, passing in the settings object
//now i can persist the settings dictionary to IsolatedStorage
}
Конечно, когда я делаю это, я использую пользовательский объект данных для сохранения своих настроек, и у меня есть возможность вызвать веб-сервис для получения настроек по умолчанию, если локальный экземпляр не найден (или обнаружен поврежденный, потому что по какой-то причине его сохранение было прервано).
Итак, возьмите приведенный выше пример, нарежьте его, нарежьте кубиками и измените в соответствии с вашими потребностями. Надеюсь, это поможет.