Из класса MainWindow.xaml.cs, почему я не могу получить доступ к настраиваемому свойству класса App.xam.cs - PullRequest
0 голосов
/ 27 мая 2020

В классе MainWindow.xaml.cs при попытке получить доступ к моему свойству Name внутри класса App.xaml.cs я получаю сообщение об ошибке:

«Приложение» не содержит определения для «Имя».

Почему?

Примечание : Я работаю по сценарию, аналогичному этому . Но автор использует глобальную переменную, и, как мы знаем, в большинстве случаев использование свойств предпочтительнее глобальной переменной . Итак, в моем случае я пробую свойство.

App.xaml.cs :

public partial class App : Application
{
    private string[] name;
    public string[] Name
    {
        get { return name; }
        set { name = value; }
    }
}

MainWindow.xaml.cs :

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        string[] myArray = App.Name //VS2019 Intellisense gives the error: 'App' does not contain a definition for 'Name'
    }
}

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вам нужно сделать свойство Name stati c, потому что это не похоже на то, что вы вообще создаете экземпляр своего класса App внутри класса MainWindow.

......
......
public partial class App : Application
{
    private static string[] name;
    public static string[] Name
    {
        get { return name; }
        set { name = value; }
    }
......
......
}
0 голосов
/ 27 мая 2020

public string[] Name - это свойство instance приложения, поэтому вам необходимо получить ссылку на экземпляр перед доступом к данным.

запущенный экземпляр WPF можно получить из stati c свойство Application.Current (требуется приведение)

var app = Application.Current as App;
string[] myArray = app.Name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...