如果它需要代码,可以使用用户控件吗?

时间:2011-12-19 05:42:22

标签: silverlight design-patterns windows-phone-7

我正在构建一个相当大的WP7应用程序,并且有很多乐趣。它是基于Pivot的,并且有很多数据透视页面。我根据"模式"动态添加和删除数据透视页面。用户选择的应用程序,以使应用程序的外观和感觉尽可能简单。到目前为止,一切都进展顺利,我的应用程序快速响应,而不是内存或资源占用,并在需要时按需执行后台加载。

Model层包含表示应用程序所有内容的所有业务逻辑。它很干净,与视图模型和视图层分开。

View-Model层是模型的抽象,它需要与视图交互,并且还包含应用程序的会话和工作流方面。它包含以View需要与之交互的方式表示模型的对象。视图模型将应用程序的状态保持在独立存储中并支持使用stomb-stoning。

View层包含xaml和后面相应代码中的许多元素枢轴,用户控件,样式,资源等。我喜欢Visual Studio 2010中的Blend和Xaml设计师,但是由于它们彼此交互的性质,我发现自己仍然在代码中编码/配置视图对象。视图对象背后的代码变得非常大,但仍然只反映了视图的状态而不是应用程序的状态。我已经使用了很多用户控件,因为这可以让我在许多数据透视页面上构建可重用的组件,但是用户控件不是Blend友好的。我担心的是,我的观点可能变得比它需要的更复杂,并且失去了使用表达混合等工具协调用户界面设计的能力。

通过这种方式自定义视图并利用可重复使用的控件,我已经大大减少了我的Xaml,并且没有遭受其他开发人员提到的臃肿的Xaml文件,但却失去了与Blend协调的能力。是否有幸福的媒介被发现?我应该考虑设计自定义控件吗?

[编辑]

感谢您的回复。我认为它可以归结为很多Xaml与设计师或者将其分解为用户控件,后面有更多的代码。自从我进入用户控件后,我的思维方式已经转移到手工而不是设计师(更好的是你知道的魔鬼!)。我的想法是,我应该将我的用户控件变为可以进行皮肤的自定义控件,还是继续保持原样并避免使用设计器。它有点像土豆 - 土豆,但我不想养成坏习惯。

1 个答案:

答案 0 :(得分:0)

根据我的意见,自定义控件(或模板化控件)与您的问题没有直接关系。自定义控件只是将新属性,事件和方法添加到现有控件的控件,并且仍然能够被设计人员“模板化”。

在代码中创建UI确实使用Blend(甚至VS设计器)设计应用程序变得更加困难,因为查看界面的唯一方法是运行应用程序。

创建UI的许多逻辑可能会被使用Visual State Manager替换。使用控件的状态为视图的特定模式设计它们。只有当您需要额外/新状态时,您才需要创建自定义控件。

由于您的问题有点广泛,请随意添加评论或扩展您的问题,以便我可以添加更多详细信息或在完全无稽之谈时删除此答案:)