我有一个c#控件库,其中包含我的模型,视图模型和视图。我像往常一样把所有东西都搞定了,但我没有得到visual studio的设计师的任何设计时间反馈(可混合性)。
当我在WPF项目中加载我的assambly并将视图包含为自定义用户控件时,我将得到我的设计时间反馈。不幸的是,这个WPF项目只是一个测试shell,因为该视图将存在于另一个应用程序中。
如果我的类库中有可混合性(设计时)支持,那么我的dev管道会更有效吗?是什么让visual studio开始展示我的设计时间datacontext?
我甚至在我的类库中使用d:DataContext="{d:DesignInstance dd:DesignViewModel}"
。类库中没有设计时数据。
答案 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>