Сессия в WPF?
В ASP.NET я могу сделать Session["something"] = something;
, а затем я могу получить на другой странице значение сеанса. Есть ли сеанс в WPF, который позволит мне сделать то же самое в ASP.NET? Я заметил, что в WPF нет сеанса, потому что есть состояние. Поскольку у меня появилось много пользовательских контрольных страниц, мне нужно получить его значения и отобразить их на MainWindow.
Есть ли что-то похожее на Session в WPF?
Некоторые ресурсы говорят, что используют файлы cookie. Как мне это сделать? mine Является ли приложение WPF не веб-приложением WPF?
Ответы
Ответ 1
Если я правильно понимаю ваш вопрос, вам просто нужно какое-то глобальное хранилище для определенных значений в вашей программе.
Вы можете создать статический класс с общедоступными статическими свойствами для различных значений, которые необходимо хранить и иметь возможность глобального доступа в вашем приложении. Что-то вроде:
public static class Global
{
private string s_sSomeProperty;
static Globals ()
{
s_sSomeProperty = ...;
...
}
public static string SomeProperty
{
get
{
return ( s_sSomeProperty );
}
set
{
s_sSomeProperty = value;
}
}
...
}
Таким образом вы можете просто написать Global.SomeProperty
в любом месте вашего кода, где доступен класс Global
.
Конечно, вам нужна проверка и - если ваше приложение многопоточно - надлежащая блокировка, чтобы ваши глобальные (общие) данные были защищены по потокам.
Это решение лучше, чем использование чего-то вроде сеанса, потому что ваши свойства будут строго типизированы, и нет никакого поиска по строкам для значения свойства.
Ответ 2
Одна из возможностей заключается в использовании:
Application.Current.Resources["something"] = something;
Я бы не стал привыкнуть слишком часто использовать это. Я думаю, что это обычно для данных, которые хранятся один раз (например, стили), а затем просто ссылаются на другие точки приложения. Все, что есть в вашем приложении для чтения/записи в какой-то глобально разделяемой части данных, является плохой практикой и может сделать отладку жесткой.
Ответ 3
Как вы уже знаете, в приложении wpf на настольном компьютере нет такой вещи, как сеанс. Если вы реализуете учетные записи в своем приложении wpf, и если вы можете предоставить постоянную услугу для каждого пользователя, это будет похоже на сеанс. Я рекомендую вам попробовать NDatabase, которая представляет собой очень простую и мощную базу данных объектов с открытым исходным кодом.
http://ndatabase.codeplex.com/
Они также предоставляют хорошие учебные пособия. Проверьте их учебник по 1 минуте и 5-минутный учебник.