Sinisa Janjetovic Ответов: 3

Как сохранить имя пользователя через все приложение C#


Я пишу код n MVVM-модели. Каждый лазер-это отдельный проект, но все они находятся в рамках одного решения. Ta пользователь bggining должен войти в систему. Позже мне придется записать имя пользователя в таблицу SQL, но я не хочу, чтобы этот пользователь снова записывал его вручную, а использовал имя пользователя, которое было введено во время процесса входа в систему.
Разве кто-нибудь может помочь?

Что я уже пробовал:

Я попытался сделать строку poblc переменной в слое пользовательского интерфейса, но логика записи данных находится в слое модели, который не имеет ссылки на слой пользовательского интерфейса, но oposite.

Спасибо за вашу помощь.

BillWoodruff

WPF ? или ?

Sinisa Janjetovic

WPF

3 Ответов

Рейтинг:
28

Maciej Los

Добавьте статический класс и сделайте его общедоступным, например:

public static class MyDataHelper
{
    public static string username {get; set;}
   //other members, fields, methods
}


Теперь вы можете использовать его во всем проекте.

Использование:
//write
MyDataHelper.username = "Maciej";
//read
Console.WriteLine(MyDataHelper.username);


Sinisa Janjetovic

"Не удается объявить члены экземпляра" в статическом классе-это сообщение об ошибке, которое я получаю с помощью этого кода

Maciej Los

Член экземпляра? Что ты пытаешься сделать?

Sinisa Janjetovic

Я только что создал новую библиотеку классов и скопировал ваш код, просто изменил ее имя и имя переменной

Sinisa Janjetovic

пространство имен PomocniParametri
{
публичный статический класс PomocniParametri
{
публичная статическая строка KorisnikAplikacije { get; set; }
//другие члены, поля, методы
}
}

Это правильно, кажется

Maciej Los

Выглядит неплохо. Я забыл добавить "статическое" слово в переменную "имя пользователя".

Sinisa Janjetovic

Нет проблем, в любом случае спасибо за вашу помощь

Maciej Los

Всегда пожалуйста. Пожалуйста, проверьте обновленный ответ.

Sinisa Janjetovic

Хорошо, я так и сделал, спасибо.

Рейтинг:
1

BillWoodruff

Или,

App.Current.Properties["Username"] = "Someone";
Видеть: [^]


Sinisa Janjetovic

В какой файл я должен поместить эту строку?

BillWoodruff

попробуйте MainWindow.xaml.cs ... или то же самое место, где вы разместили статический класс.

вам нужно будет привести сохраненный объект обратно в строку:

string uname = (string) App.Current.Свойства["Имя Пользователя"];

Sinisa Janjetovic

спасибо!

Sinisa Janjetovic

Извини, я не успел.
Ни с первым ответом, ни с вашим. Наверное, я не знаю, как это сделать

BillWoodruff

Когда вы создали свой проект: какую версию Visual Studio вы используете ? Какая версия .NET FrameWork ? Название типа проекта ?

Sinisa Janjetovic

Visual Studio 2017, .NET 4.7, у меня есть 3 проекта в одном решении, модель MVVM

BillWoodruff

Я собираюсь перестать отвечать, потому что ... не работая с WPF в течение многих лет ... Не думаю, что смогу вам чем-то помочь. И я использовал приложение.Current.Настройки в прошлом прошли без проблем.

Чтобы получить более полезный ответ, я предлагаю вам отредактировать свой пост, чтобы подробно описать структуру вашего приложения:

Для каждого из этих трех проектов опишите имя типа проекта, который вы выбрали при его создании; какое из них является приложением ?

удачи тебе, Билл

Sinisa Janjetovic

Спасибо Вам за вашу доброту и добрую волю помочь мне

BillWoodruff

Нет проблем: в то время как вы можете жестко кодировать глобалы в xaml следующим образом: https://stackoverflow.com/a/27595156/133321

я думаю, что это не то, что вам нужно.

Рейтинг:
1

Member 14511434

(1)со страницы входа в систему:
объявить --> public static string username="";

(2)внутри функции, чтобы получить доступ к следующей странице
назначьте имя пользователя=независимо от текстового поля.Text

(3)на любых всех страницах, которые вы хотите использовать имя пользователя
присвойте его переменной, которую вы объявили ...например, string name=login.username;

Надеюсь, что это решит ваши проблемы


Maciej Los

Это не WWW (ASP.NET) проект!