5

我有 ac# 控件库,其中包含我的模型、视图模型和视图。我像往常一样把所有东西都连接起来,但我没有从 Visual Studio 的设计师那里得到任何设计时反馈(可混合性)。

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

如果我可以在我的类库中支持可混合性(设计时),那么我的开发管道会更有效吗?是什么让 Visual Studio 开始显示我的设计时数据上下文?

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

4

2 回答 2

5

尝试

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

这里有一个博客也可以帮助你。

于 2012-03-27T08:01:27.803 回答
0

我发现必须为我的视图模型创建一个空的构造函数,或者一直创建派生类,只是为了取悦 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>
于 2015-10-18T18:34:39.510 回答