Jak*_*ake 15 c# wpf global-variables
我用c#创建了一个带有3个不同窗口的WPF应用程序,Home.xaml, Name.xaml, Config.xaml.我想声明一个变量Home.xaml.cs,我可以在其他两种形式中使用.我尝试过,public string wt = "";但那没用.
如何使这三种形式都可以使用?
Hen*_*man 22
正确的方法,特别是如果你想转移到XBAPP,是将它存储在
Application.Current.Properties
Run Code Online (Sandbox Code Playgroud)
这是一个Dictionary对象.
小智 14
为了避免在Windows和用户控件之间传递值,或创建静态类来复制WPF中的现有功能,您可以使用:
App.Current.Properties["NameOfProperty"] = 5;string myProperty = App.Current.Properties["NameOfProperty"];这是上面提到的,但语法有点偏.
这在您的应用程序中提供了全局变量,可以从其中运行的任何代码访问.
Edu*_*uci 11
您可以使用静态属性:
public static class ConfigClass()
{
public static int MyProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这里的想法是创建一个类,您拥有所有"常见数据",通常是配置.当然,您可以使用任何类,但建议您使用静态类.您可以像这样访问此属性:
Console.Write(ConfigClass.MyProperty)
Run Code Online (Sandbox Code Playgroud)
小智 7
正如其他人之前提到的,要么使用App.Current.Properties或创建静态类。我在这里为那些需要更多静态类指导的人提供一个示例。
在解决方案资源管理器中右键单击您的项目名称,
Add > New Item选择Class为其命名(我通常将其命名为 GLOBALS)
using System;
namespace ProjectName
{
public static class GLOBALS
{
public static string Variable1 { get; set; }
public static int Variable2 { get; set; }
public static MyObject Variable3 { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
using ProjectName
GLOBALS.Variable1 = "MyName"
Console.Write(GLOBALS.Variable1)
GLOBALS.Variable2 = 100;
GLOBALS.Variable2 += 20;
GLOBALS.Variable3 = new MyObject();
GLOBALS.Variable3.MyFunction();
Run Code Online (Sandbox Code Playgroud)
关于单元测试和静态类/静态变量的注释
使用静态类来保存全局变量通常被认为是不好的做法,主要原因之一是它会严重阻碍正确对代码进行单元测试的能力。
但是,如果您需要可测试的代码并且仍然想使用静态全局变量类,那么至少考虑使用单例模式来访问您的全局变量。[更多详细信息:https://jonskeet.uk/csharp/singleton.html]
下面是我的意思的一个有用的片段。使 GLOBALS 抽象并删除静态,然后在 GLOBALS 类中添加以下内容:
private static GLOBALS instance = null;
/// <summary>
/// The configuration instance used by the application and unit tests
/// </summary>
public static GLOBALS Instance
{
get
{
if (instance == null)
{
//Create the default configuration provider
instance = new AppConfigConfiguration();
}
return instance;
}
set
{
instance = value;
}
}
Run Code Online (Sandbox Code Playgroud)
AppConfigConfiguration(在上面的示例中)是一个派生自 GLOBALS 的应用程序特定设置类。单例模式还允许派生其他配置,并可以选择在 Instance 属性上进行设置,这种情况通常发生在单元测试运行之前,以便确保测试特定的设置。
| 归档时间: |
|
| 查看次数: |
58354 次 |
| 最近记录: |