2009-07-21 138 views
12

我在c#中用3個不同的窗口創建了一個WPF應用程序,其中有Home.xaml, Name.xaml, Config.xam l。我想在Home.xaml.cs中聲明一個變量,我可以在其他形式中使用它。我試着做public string wt = "";,但沒有奏效。使用全局變量的WPF應用程序

如何讓所有三種形式都可以使用?

回答

11

您可以使用一個靜態屬性:

public static class ConfigClass() 
{ 
    public static int MyProperty { get; set; } 
} 

編輯:

這裏的想法是創建一個你認爲所有的「通用數據」一類,通常配置。當然,你可以使用任何類,但建議你使用靜態類。 你可以像這樣訪問這個屬性:

Console.Write(ConfigClass.MyProperty) 
+0

我不知道我的理解......你能解釋一下吧。謝謝。 – Jake 2009-07-21 20:10:09

1

有兩種不同的東西,你可以在這裏做(除其他外,這些只是浮現在腦海中第一個兩個)。

  1. 您可以使靜態變量上Home.xaml.cs

    公共靜態字符串美孚= 「」;

  2. 您可以將變量傳遞給所有三種形式。

我會去與#2,我自己,如果有必要創建一個包含我所需要的數據單獨的類。然後每個班級都可以訪問數據。

+0

但我想給家中的變量添加一個值,並在config中使用該值。如果我用所有的形式聲明價值被清除。我如何聲明它,以便我可以以三種形式連續使用它。 – Jake 2009-07-21 20:19:25

18

正確的方法,特別是如果你想要移動到XBAPP,是將其存儲在

Application.Current.Properties 

這是一個字典對象。

+0

屬性不是作爲Application.Current的成員提出的,有沒有什麼特殊的事情可以訪問它? 編輯:它剛剛發生在我身上,這可能是因爲我正在製作Windows Phone應用程序,所以我可能會有稍微不同的庫。 – 2011-03-21 21:34:08

+2

@dr monk:Win Phone(7)表示SilverLight,這個答案是關於WPF的。 – 2011-03-21 22:18:23

10

爲了避免以繞過窗口和用戶控件,或創建一個靜態類之間的值複製中WPF現有的功能,你可以使用:

  • 設置:App.Current.Properties["NameOfProperty"] = 5;
  • 越來越:string myProperty = App.Current.Properties["NameOfProperty"];

這是上面提到的,但語法有點不合適。

這提供了應用程序中的全局變量,可以從任何運行在其中的代碼訪問。

0

的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()