Доступ к членам приложения? - PullRequest
2 голосов
/ 10 сентября 2009

Давайте предположим, что в App.cs - я бы добавил поле в класс, представляющий приложение. Могу ли я получить доступ к этому полю со страниц приложения? Если так, как я могу это сделать? Правильно ли предположить, что после инициализации это поле участника будет «живым» в течение времени выполнения приложения?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2009

Можно. в основном вы просто получаете текущее приложение и приводите его к приложению (или какому-либо имени класса в вашем App.Xaml). Вот фрагмент, демонстрирующий это.

var myApp = Application.Current as App;
var n = myApp.NameOfPropertyAdded;

Я не уверен, что вы подразумеваете под живым. Я предполагаю, что вы хотите привязать к нему что-то и обновлять привязки при его обновлении. Для этого вам нужно настроить уведомление об изменении свойства.

Метод добавления свойств в файл App.xaml.cs пахнет немного странно для меня. Я думаю, что рекомендуемый подход заключается в добавлении чего-либо к приложению как ресурса уровня приложения, чтобы вы могли легко ссылаться на них в XAML.

1 голос
/ 11 сентября 2009

Если вы собираетесь часто обращаться к этим полям, может быть полезно добавить свойство для текущего приложения в ваш ViewModel или Xaml.cs для быстрого доступа позже.

public Application CurrentApp
{
    get
    {
        return Application.Current as App;
    }
}

Тогда на вашей странице вы можете просто указать свою собственность

CurrentApp.MyField;

И да, поле или свойство в вашем App.xamls.cs будут существовать в течение всего срока службы приложения.

0 голосов
/ 28 марта 2011

Если вы сделаете поле, свойство, метод статическим, то вы можете получить к нему доступ, используя

App.myField;
App.MyProperty;
App.MyMethod();
...