2013-09-01 56 views
1

我正在通過一些我發現的WPF例子。Application.Current < - 它是如何工作的?

我這裏有一類是從應用程序繼承:

public partial class DataBindingLabApp : Application 
{ 
    private ObservableCollection<AuctionItem> auctionItems = new ObservableCollection<AuctionItem>(); 

    public ObservableCollection<AuctionItem> AuctionItems 
    { 
     get { return this.auctionItems; } 
     set { this.auctionItems = value; } 
    } 
} 

正如你可以看到這個類有一個名爲AuctionItems中屬性。 由於它繼承自Application,它還包含一個名爲'Current'的屬性,它提供對Application實例的訪問(根據MSDN)。

然後在代碼中,我有:

((DataBindingLabApp)Application.Current).AuctionItems.Add(item); 

我不明白。

因爲我們可以有很多類可以從應用繼承,我們又如何知道Application.Current實際上包含類的DataBindingLabApp「的對象?

謝謝!

+2

每個項目只有1個應用。 'Current'不是'Application'實例的屬性,它是'Application'類的**靜態屬性**。 –

回答

3

由於Visual Studio中的部分生成的類默認情況下,自定義應用程序類型(DataBindingLabApp你的情況)的產生入口點(您可以通過在溶液的根目錄下搜索找到它)。

[System.STAThreadAttribute()] 
    [System.Diagnostics.DebuggerNonUserCodeAttribute()] 
    public static void Main() { 
     DataBindingLabApp app = new DataBindingLabApp(); 
     app.InitializeComponent(); 
     app.Run(); 
    } 

並且在應用程序運行後,Application.Current包含了DataBindingLabApp的實例。

+0

好吧,我發現它在:「DataBindingLabApp.g.i.cs」要是我有兩個不同的類從應用程序繼承會發生什麼? –

+0

當時只能運行一個。哪一個在「Main」(入口點)中被實例化。這個將在Application.Current屬性中可用。 –

3

因爲我們可以有很多類可以從應用

不相關的繼承。重要的是應用程序類只有一個實例。正在運行的一個且唯一的應用程序。一定要區分物體的類型。

相關問題