作者:勤奋的瞌睡猪_715 | 2023-09-02 11:12
我们正在实现一个需要可停靠窗口的应用程序,类似于Visual Studio 2005/2008,但具有多个"停靠站点",与VS的单一站点不同.有没有人建议在一个好的图书馆 - OSS或商业?我知道Infragistics有一个,以及来自DevComponents的Divelement的SandDock和WPF-Dock,以及ActiPro的Docking和MDI产品.CodeProject上还有一个.有没有人使用过这些库?体验好坏?如果您有其中一个经验,它是否支持多个"停靠站点"?
1> Alex_P..:
Codeproject中的一个是AvalonDock - 我们现在使用它超过半年,但我们还远未发布,所以我们有灵活性.在结束AvalonDock之前,我们尝试过Infragistix,ActiPro,SandDock以及其他一些人.即使AvalonDock不是100%无bug(好吧是什么?)没有主要的,它非常稳定,快速并且具有所有功能.它确实支持多个停靠站点.
它是一个开源项目,并且正在积极开发中,因此发现并修复了错误.到目前为止经验丰富.
AvalonDock(以及所有其他对接管理器)没有的一个特性是容器中功能完备的ItemsSource属性.即我真的希望能够在我的班级中拥有一个可观察的集合,我可以绑定到DocumentPane或DockablePane的ItemsSource属性,只要我有正确的DataTemplates,它们将显示为文档或可停靠的选项卡/窗口.ItemsSource属性存在,但它的可用性非常有限 - 它只能包含DocumentContent或DockableContent对象,并且在使用ItemsSource时拖放不起作用.
在我发布上述评论之后的几周,该功能被添加到AvalonDoc!现在有DocumentsSource属性可以绑定到文档集合.它充当魅力.
我有点担心这个图书馆在过去两年里缺乏持续的发展.
在AvalonDock中对绑定的真正支持是不存在的.ItemsSource只要你给它一个DocumentContent/DockableContent的集合就可以工作,但是我发现耦合和/或额外的工作会引起麻烦,至少在我正在研究的项目中.我试图破解一个支持MVVM的AvalonDock修复程序(当然,某些功能很难转换,比如取消停靠窗口),但由于各种原因失败,有时当我接近工作解决方案时.我发现当前状态下的AvalonDock禁止使用最佳实践,并不真正推荐它.
2> billb..:
我已经使用ActiPro库几个月了,它做得很好.它确实支持多个停靠站点.支持非常出色,您可以获得WPF中缺少的其他控件(日期选择器等).对我来说,150美元的钱花得很好.它开箱即用,没有大惊小怪.
我们曾经使用Divelements for WinForm控件,但我们认为Actipro有更好的支持,所以我们切换了WPF.
只是我的两分钱.
@miliu,Brads的短语是"我不能推荐足够的ActiPro's Dock",这意味着他真的推荐了这个产品,这就是"我不能告诉你我有多爱......"
我不能推荐足够的ActiPro Dock - 它是一个出色的对接解决方案(我们将它与Prism应用程序一起使用).我通常厌恶第三方控件,但这组控件感觉它们来自微软.对象API是合乎逻辑的,但却是完整的.我们还使用了ActiPro Ribbon,这也是一个很好的控件.强烈推荐!
3> Philipp Schm..:
不要忘记GitHub上的AvalonDock(WPF Toolkit的一部分).我在其他地方看过它.
最初我打算使用ActiPro库(主要是因为我已经在使用它们的功能区),但我可能会给AvalonDock一个机会,因为它是开源的.
有人对AvalonDock有任何反馈/意见吗?