我在c#中用3个不同的窗口创建了一个WPF应用程序,其中有Home.xaml, Name.xaml, Config.xam
l。我想在Home.xaml.cs
中声明一个变量,我可以在其他形式中使用它。我试着做public string wt = "";
,但没有奏效。使用全局变量的WPF应用程序
如何让所有三种形式都可以使用?
我在c#中用3个不同的窗口创建了一个WPF应用程序,其中有Home.xaml, Name.xaml, Config.xam
l。我想在Home.xaml.cs
中声明一个变量,我可以在其他形式中使用它。我试着做public string wt = "";
,但没有奏效。使用全局变量的WPF应用程序
如何让所有三种形式都可以使用?
您可以使用一个静态属性:
public static class ConfigClass()
{
public static int MyProperty { get; set; }
}
编辑:
这里的想法是创建一个你认为所有的“通用数据”一类,通常配置。当然,你可以使用任何类,但建议你使用静态类。 你可以像这样访问这个属性:
Console.Write(ConfigClass.MyProperty)
有两种不同的东西,你可以在这里做(除其他外,这些只是浮现在脑海中第一个两个)。
您可以使静态变量上Home.xaml.cs
公共静态字符串美孚= “”;
您可以将变量传递给所有三种形式。
我会去与#2,我自己,如果有必要创建一个包含我所需要的数据单独的类。然后每个班级都可以访问数据。
但我想给家中的变量添加一个值,并在config中使用该值。如果我用所有的形式声明价值被清除。我如何声明它,以便我可以以三种形式连续使用它。 – Jake 2009-07-21 20:19:25
正确的方法,特别是如果你想要移动到XBAPP,是将其存储在
Application.Current.Properties
这是一个字典对象。
属性不是作为Application.Current的成员提出的,有没有什么特殊的事情可以访问它? 编辑:它刚刚发生在我身上,这可能是因为我正在制作Windows Phone应用程序,所以我可能会有稍微不同的库。 – 2011-03-21 21:34:08
@dr monk:Win Phone(7)表示SilverLight,这个答案是关于WPF的。 – 2011-03-21 22:18:23
为了避免以绕过窗口和用户控件,或创建一个静态类之间的值复制中WPF现有的功能,你可以使用:
App.Current.Properties["NameOfProperty"] = 5;
string myProperty = App.Current.Properties["NameOfProperty"];
这是上面提到的,但语法有点不合适。
这提供了应用程序中的全局变量,可以从任何运行在其中的代码访问。
的App.xaml:
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
StartupUri="WPF application/ResourcesFromCodeBehindSample.xaml">
<Application.Resources>
<sys:String x:Key="strApp">Hello, Application world!</sys:String>
</Application.Resources>
代码背后
Application.Current.FindResource("strApp").ToString()
我不知道我的理解......你能解释一下吧。谢谢。 – Jake 2009-07-21 20:10:09