Application.Current< - 它是如何工作的?

时间:2013-09-01 13:27:47

标签: c# wpf

我正在浏览一些我找到的WPF示例。

我这里有一个继承自Application的课程:

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的类,所以我们怎么知道Application.Current实际上包含了'DataBindingLabApp'类的对象?

谢谢!

2 个答案:

答案 0 :(得分:3)

  

因为我们可以有很多可以继承自Application

的类

这不相关。重要的是Application类中只有一个实例。正在运行的唯一应用程序。一定要区分类型和对象。

答案 1 :(得分:3)

因为默认情况下Visual Studio在部分生成的自定义应用程序类型(在您的情况下为DataBindingLabApp)中生成入口点(您可以通过在解决方案的根目录中搜索来找到它)。

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

在运行应用程序之后,Application.Current包含DataBindingLabApp的实例。