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的。