首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计时数据接口实现

设计时数据接口实现
EN

Stack Overflow用户
提问于 2016-06-21 06:02:27
回答 1查看 126关注 0票数 0

我有一个像这样的ViewModel类

代码语言:javascript
复制
public class MyViewModel : ViewModelBase
{
    public MyViewModel()
    {
        if (!IsInDesignMode)
        {
            throw new InvalidOperationException();
        }
    }

    public MyViewModel(IDataProvider dataProvider)
    {
        Data = new ObservableCollection<IData>(dataProvider.GetData());
    }

    public ObservableCollection<IData> Data { get; private set; }
}

现在我想创建一些设计时数据。在我的单元测试中,我使用了一个模拟框架(Moq)来完成这个任务。我不喜欢这样一个事实:我需要在我的应用程序项目中创建一些IData的模拟实现,或者引用和使用模拟框架。

在这种情况下,拥有设计时间数据的最优雅的方法是什么?

编辑:不确定是否相关,但我使用的是Visual 2012。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-21 16:05:54

基本上,您创建了一个存根,而不是设计时数据的模拟。存根不能注入任何依赖项。

代码语言:javascript
复制
public class MyDesignViewModel : ViewModelBase
{
    public MyViewModel()
    {
        Data = new ObservableCollection<IData>(new List<IData>() 
        {
             new MyData() { Value1 = 1, Value2 = "Test" },
             ...
        });
    }

    public ObservableCollection<IData> Data { get; private set; }
}

然后在XAML中这样使用它:

代码语言:javascript
复制
<UserControl x:Class="MyView"
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DataContext="{d:DesignInstance Type=vm:MyDesignViewModel, IsDesignTimeCreatable=True}">
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37936657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档