我可以在设计器中基于集合的控件中预览我的 DataTemplate 吗?

Can I preview my DataTemplate(s) in my collection-based controls in the designer?

我有一个即将完成的应用程序,它使用了多个数据模板。具体来说,我有一个 ListView 和一个 DataGrid。

我为这些项目创建了一些特殊格式,我想预览其中一个列表项目,以便我可以调整视觉布局、颜色、填充、边距等。

这可以在 Visual Studio 设计器中完成,还是我必须在 Xaml 中手动设计这些模板,并通过 运行 我的应用程序预览?

您可以使用设计时视图模型。

将这些属性添加到用户控件/window:

xmlns:designTime="clr-namespace:NamespaceToYourDesignTimeViewmodel"
         mc:Ignorable="d"
         d:DataContext="{d:DesignInstance Type=designTime:DesignTimeMyViewModel, IsDesignTimeCreatable=True}"

假设您的设计时视图模型与 运行 时视图模型具有相同的结构(您可以选择使用界面强制执行);然后您可以在设计时视图模型中创建设计时数据并在设计器中查看它。

例如,您的设计时视图模型可能如下所示:

public class DesignTimeMyViewModel : IMyViewModel
{
    public string Name { get; set; }

    public DesignTimeMyViewModel()
    {
        this.Name = "Design time data";
    }
}

接口将强制运行时间和设计时间之间结构的一致性;并且设计时数据可以硬编码为您需要在 VS XAML 设计器中看到的任何内容。

这是一个简单的示例,但同样的原理可以扩展到复杂对象的集合。设计者仍将以与 运行 时相同的方式绑定设计时数据。