【发布时间】:2010-03-11 06:13:28
【问题描述】:
我有 WPF 应用程序,其中我有一个主窗体,其他用户控件在主窗体中显示为子窗体。当我对数据库进行异步调用时,我必须显示忙碌栏。声明 Busy bar 对象然后在每个子用户控件中使用的最佳方法是什么。是否需要在主窗体中声明busy bar对象,然后使用子用户控件或App文件最好,或者有什么好的方法。
【问题讨论】:
标签: wpf
我有 WPF 应用程序,其中我有一个主窗体,其他用户控件在主窗体中显示为子窗体。当我对数据库进行异步调用时,我必须显示忙碌栏。声明 Busy bar 对象然后在每个子用户控件中使用的最佳方法是什么。是否需要在主窗体中声明busy bar对象,然后使用子用户控件或App文件最好,或者有什么好的方法。
【问题讨论】:
标签: wpf
这取决于您的“忙碌栏”是显示在其他控件或窗口中的控件,还是其本身的弹出窗口。
如果它是一个控件,则不能(轻松)在应用程序的多个位置使用单个控件实例。 WPF 控件实例是可视化和逻辑树的一部分。它不能是两个视觉树的一部分。你可以创建一个 BusyBar 控件class,并在你需要的不同地方声明它的多个instances:为此,使用 User Visual Studio 中的控件 (WPF) 或自定义控件 (WPF) 模板。
如果它是一个窗口,您可以在应用程序启动时创建它,但将其隐藏。然后,您可以在需要时从代码中显示它(使用 Show 或 ShowDialog 方法)。也就是说,尚不清楚为什么无论如何您都需要将其作为单身人士。创建窗口很便宜,尤其是与通过网络调用数据库相比。同样,声明一个类,并在需要时创建和显示该类的实例,这将是更常用的方法。您可以轻松创建一个静态方法来封装“create-bind-show-wait-hide”循环,以免细节污染您的应用代码。
【讨论】:
((App)(Application.Current)).BusyBar 的身份访问它(并且如上所述可以将其封装为 App 类的静态属性或方法)。