大佬教程收集整理的这篇文章主要介绍了让Silverlight MVVM使用Expression Blend设计时数据?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public partial class SomePage : UserControl { public SomePage() { InitializeComponent(); // New up a viewmodel and bind to layout root var vm = new Someviewmodel(); LayoutRoot.DataContext = vm; } }
然后所有绑定都在View中处理,所有逻辑都在viewmodel中处理,如模式所示.
但是,以这种方式连接它们意味着设计器不能很好地工作,我不能使用Expression Blend设计时间数据.我知道有一些像MVVM Light这样的库可以帮助实现这一切,但我不想引入一个库,因为它是“还有一件事”需要处理.
在维护设计器功能的同时,是否有一个简单的模式可以让MVVM连接到Silverlight,特别是在Blend中?我已经做了一些谷歌搜索,但有那么多过时的文章和WPF和Silverlight和旧版本之间的这么多混淆,我很难弄清楚要使用哪些.
顺便说一句,如果重要的话,我会专注于使用VS2010的SL4.
首先,让Expression的Sample Data和设计时属性(即d:DataContext)接管设计器.在您的代码中,您只需调整视图模型绑定:
if (!DesignerProperties.IsInDesignTool) { var vm = new Someviewmodel(); LayoutRoot.DataContext = vm; }
其次,您可以使用绑定的特殊设计时视图模型:
LayoutRoot.DataContext = DesignerProperties.IsInDesignTool ? new @L_299_18@model() : new Myviewmodel();
最后,另一种方法是管理视图模型中的数据.我不喜欢这样,因为它将责任分散在所有视图模型中,但您有更高的精度:
// constructor private Widget[] _designData = new[] { new Widget("Test One"),new Widget("Test Two") }; public Myviewmodel() { if (DesignerProperties.IsInDesignTool) { MyCollection = new ObservableCollection<Widget>(_designData); } else { Myservice.Completed += MyserviceCompleted; Myservice.requestWidgets(); } } private void MyserviceCompleted(object sender,AsynchronousEventArgs aE) { // load up the collection here }
希望有所帮助!
以上是大佬教程为你收集整理的让Silverlight MVVM使用Expression Blend设计时数据?全部内容,希望文章能够帮你解决让Silverlight MVVM使用Expression Blend设计时数据?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。