1

我正在浏览我发现的一些 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”的对象?

谢谢!

4

2 回答 2

3

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

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

于 2013-09-01T13:36:11.253 回答
3

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

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

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

于 2013-09-01T13:39:42.823 回答