C# 从MainWindow.xaml.cs类,了解我无法访问App.xam.cs类的自定义属性的原因

C# 从MainWindow.xaml.cs类,了解我无法访问App.xam.cs类的自定义属性的原因,c#,wpf,xaml,C#,Wpf,Xaml,在main window.xaml.csclass中,尝试访问App.xaml.csclass中的我的属性Name “应用程序”不包含“名称”的定义 为什么? 备注:我正在处理类似的场景。但作者使用了一个全局变量,我们知道,在大多数情况下。所以,我在我的案件中尝试财产 App.xaml.cs: public partial class App : Application { private string[] name; public string[] Name {

main window.xaml.cs
class中,尝试访问
App.xaml.cs
class中的我的属性
Name

“应用程序”不包含“名称”的定义

为什么?

备注:我正在处理类似的场景。但作者使用了一个全局变量,我们知道,在大多数情况下。所以,我在我的案件中尝试财产

App.xaml.cs

public partial class App : Application
{
    private string[] name;
    public string[] Name
    {
        get { return name; }
        set { name = value; }
    }
}
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'
    }
}
main window.xaml.cs

public partial class App : Application
{
    private string[] name;
    public string[] Name
    {
        get { return name; }
        set { name = value; }
    }
}
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'
    }
}

您需要将Name属性设置为静态,因为它看起来根本不像是在MainWindow类中实例化应用程序类

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

public string[]Name
是应用程序的实例属性,所以在访问数据之前需要获取对实例的引用

可以从静态属性Application.Current(需要强制转换)获取正在运行的WPF实例


糟糕的是,正如
@TamBui
指出的那样,我忘记在属性声明中使用static关键字。更多关于这个话题,有趣的辩论。特别是来自@ashveli的。