是什么让visual studio的设计师获得设计时间支持

时间:2012-03-26 14:51:48

标签: wpf visual-studio mvvm blendability

我有一个c#控件库,其中包含我的模型,视图模型和视图。我像往常一样把所有东西都搞定了,但我没有得到visual studio的设计师的任何设计时间反馈(可混合性)。

当我在WPF项目中加载我的assambly并将视图包含为自定义用户控件时,我将得到我的设计时间反馈。不幸的是,这个WPF项目只是一个测试shell,因为该视图将存在于另一个应用程序中。

如果我的类库中有可混合性(设计时)支持,那么我的dev管道会更有效吗?是什么让visual studio开始展示我的设计时间datacontext?

我甚至在我的类库中使用d:DataContext="{d:DesignInstance dd:DesignViewModel}"。类库中没有设计时数据。

2 个答案:

答案 0 :(得分:5)

尝试

d:DataContext="{d:DesignInstance dd:DesignViewModel, IsDesignTimeCreatable=True}

有一个博客here也可以为您提供帮助。

答案 1 :(得分:0)

我发现为我的viewmodel创建一个空构造函数或者一直创建派生类真的很令人沮丧,只是为了取悦WPF设计师。

一个适合我的解决方案(仅使用Visual Studio 2013测试)使用静态属性来公开设计时视图模型的实例,例如

C#代码

namespace WpfApplication2
{
    public class Person
    {
        public Person(string id)
        {
            Id = id;
        }

        public string Id { get; private set; }
    }

    public static class DesignViewModels
    {
        public static Person Person
        {
            get { return new Person("Design time person id"); }
        }
    }
}

和XAML

<Window x:Class="WpfApplication2.MainWindow"
                xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
                xmlns:my="clr-namespace:WpfApplication2"
                mc:Ignorable="d"
                Title="MainWindow" Height="350" Width="525">
    <d:DesignProperties.DataContext>
        <x:Static Member="my:DesignViewModels.Person" />
    </d:DesignProperties.DataContext>
    <TextBlock Text="{Binding Id}"/>
</Window>