与GUI通信

时间:2012-03-12 14:12:30

标签: c# wpf

我正在开发一个用C#编写的小应用程序。 GUI由XAML / WPF组成。 没什么好看的。用户输入一些设置,按下按钮并等待发生的事情。然而,随着应用程序在过去几周内大量增长,代码变得越来越糟糕。真的太可怕了。修复我认为不属于的地方。它正逐渐成为可维护性的地狱。并且应用程序在不久的将来仍会增长很多。

我非常希望将其重构为更成熟,可维护的代码。如果不是为了更好地编写和设计应用程序。

由于用户没有真正了解实际发生的事情的方法,我计划添加一个显示一些重要内容的状态栏,因此用户至少知道发生了什么。

现在,我应该怎么做呢。我的gui实例化了一些对象,它反过来实例化其他对象。我可以通过应用程序传递对gui-window的引用,但那只是肮脏的。你们推荐什么?

我一直在研究MVVM,但我不确定这是否是我需要的。有什么帮助吗?

4 个答案:

答案 0 :(得分:4)

当然,您需要MVVM将所有内容整理好,但您面临的是常见的学习过程。

尽可能多地阅读有关MVVM和OOP的内容(如果你没有掌握它,请专注于OOP)并使用它直到你对你编写的代码感到非常满意(你可能需要几年才能完成那个级别)。

你面前有一条神奇的道路。

答案 1 :(得分:1)

MVVM确实是构建代码以提高可维护性的一种方法。我现在已经使用它一段时间了,它是一种非常自然,低阻抗的方式来组合一些内置分离的代码。

另请注意,您也可以使MVVM变得丑陋。它仍然归结为在代码级别遵循一些体面的做法。

继续迭代代码,直到感觉像是你不害怕别人看的东西。

答案 2 :(得分:0)

是的,MVVM是解决方案的一种方式。

通常,您可能会想到Observer pattern和事件。它可以帮助您启用任何对象来通知他们不知道的GUI。

答案 3 :(得分:0)

您可以使用MVVM解决耦合问题。

通过适当的数据和Binding,您可以让状态保持在繁重的升级班级。

您可以使用仅表示当前是否正在工作的bool,或者添加描述状态的字符串,或者可以使用转换器测试结果的可空类型等等。

在MVVM Light中 - http://mvvmlight.codeplex.com/ - 您还有一个Messenger工具可以用另一种方式解决问题。你会从沉重的举重者那里传播状态变化,而不关心谁在聆听(脱钩)。这种模式有几个名称和变体(观察者,订阅者,信号,......)