silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了让Silverlight MVVM使用Expression Blend设计时数据?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我是Silverlight的MVVM模式的大力支持者.目前,我通过在视图后面的代码中查看ViewModel将ViewModel连接到View,因此: public partial class SomePage : UserControl { public SomePage() { InitializeComponent(); // New up a
我是Silverlight的MVVM模式的大力支持者.目前,我通过在视图后面的代码中查看viewmodel将viewmodel连接到View,因此:

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,请注明来意。