WPF性能问题

时间:2010-04-02 09:47:51

标签: wpf performance

我的表格有很多标签。每个选项卡都有许多控件文本框,组合框,数据网格和e .t.c.我以这种方式将表单绑定到一个数据源

this.DataContext=MyClassInstance

但是这样我的表格打开速度很慢。大约一分钟。

当我对上面的代码发表评论时,表单会很快打开。我的所有控件都绑定到XAML中的类属性。请告诉我在激活它时绑定每个标签的方法,或者在后台线程中绑定控件或任何其他可以帮助我加快表单的想法。

提前致谢。

3 个答案:

答案 0 :(得分:0)

我认为问题出在你绑定的类实例上。

当xaml绑定到类时,将触发绑定属性的所有getter。如果每个getter访问数据库以获取一些数据,这可能需要一段时间。

我认为你应该在这里仔细检查你的设计,并考虑异步获取你的数据。

答案 1 :(得分:0)

我同意格里。

我建议如下: 当您启动应用程序时,我会自动打开一个选项卡。仅加载该选项卡,不关心其他选项卡。这应该会更快地启动您的项目。 您为其他选项卡执行的操作是在第一次单击时加载它们。例如,当用户对选项卡5感兴趣时,唯一加载的将是启动时的初始选项卡,以及用户单击时的选项卡5。将不会加载所有其他选项卡,这将减少启动时间。

希望这个想法对你很清楚,并有助于你的申请。

答案 2 :(得分:0)

我发现为什么我的表格打开这么慢。我在表单中使用了大约20个XMLDataProvider对象。这个提供程序与xml文件一起迭代。当我在下面评论代码时,所有工作都很快感谢大家的帮助

                //relatives_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_RelativeList" };
            //education_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_EducationList" };
            //requalification_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_RequalificationList" };
            //jobHistory_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_JobHistoryList" };
            //rank_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_RankList" };
            //tradeUnion_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_TradeUnionList" };
            //election_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_ElectionList" };
            //judgeHistory_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_JudgeHistoryList" };
            //tempWork_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_TempWorkList" };
            //inquire_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_InquireList" };
            //bulleten_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_BulletenList" };
            //reprimand_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_ReprimandList" };
            //certificate_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_CertificateList" };
            //course_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_CourceList" };
            //incentive_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_IncentiveList" };
            //btrip_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_BtripList" };
            //vacation_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_VacationList" };
            //pass_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_PassList" };
            //language_xdp = new XmlDataProvider() { Source = uri, XPath = "Config/ColumnsVisibility/Person_LanguageList" };