在 Visual Studio 中将设计时示例数据与 XAML 设计器配合使用

某些数据依赖控件(例如 ListViewListBoxDataGrid)很难在没有数据的情况下进行可视化。 在本文中,我们将回顾一种新方法,允许使用 Visual Studio 中的 XAML 设计器处理 Windows Presentation Foundation (WPF) .NET Core 项目或 WPF .NET Framework 项目的开发人员启用这些控件中的示例数据。

要求

示例数据功能需要 Visual Studio 2019 版本 16.10 或更高版本。 此功能支持使用新设计器时面向 .NET Core 或 .NET Framework 的 WPF 的 Windows 桌面项目。

示例数据功能的基础知识

示例数据功能仅适用于设计时可视化效果。 它仅在 XAML 设计器中显示,而不会出现在正在运行的应用中。 因此,它应用于属性ItemsSource的设计时版本d:ItemsSource。 示例数据需要设计时命名空间才能正常工作。

注释

若要详细了解 XAML 中的设计时属性,请参阅 XAML 设计时属性

若要开始,请将以下代码行添加到 XAML 文档的标头(如果它们尚不存在):

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"

添加命名空间后,可以使用d:ItemsSource="{d:SampleData}"该命名空间在或ListViewListbox控件中DataGrid启用示例数据。 例如:

<DataGrid d:ItemsSource="{d:SampleData}"/>

显示数据网格上的示例数据的屏幕截图。

在此示例中,如果没有 d:ItemsSource="{d:SampleData}",XAML 设计器将显示一个空的数据网格。 相反, d:SampleData它现在会显示生成的默认示例数据。

默认情况下,将显示五个项目。 但是,可以使用该 ItemCount 属性指定要显示的项数。 例如: d:ItemsSource="{d:SampleData ItemCount=2}"

使用数据模板的示例数据

使用数据模板时,示例数据功能适用于ListBoxListViewDataGrid控件。 该功能将分析 DataTemplate 控件,并尝试为其生成适当的数据。

仅针对使用绑定的数据模板中的元素生成示例数据。 即使绑定还没有源,也会生成示例数据。 例如:

<ListView d:ItemsSource="{d:SampleData ItemCount=3}">
     <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Width="50" Source="{Binding ProfilePicture}"/>
                <StackPanel Orientation="Vertical">
                    <TextBlock Text="{Binding FirstName}" Margin="5"/>
                    <Label Content="{Binding LastName}"/>
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

显示列表视图中包含数据模板的示例数据的屏幕截图。

使用建议的作的示例数据

若要从设计器中轻松启用或禁用控件的示例数据,可以使用“建议的作”功能。 建议的作是设计器上的灯泡,在选择控件时显示在右上角。 可以通过选择控件、选择灯泡,然后选择 “显示示例数据”来启用示例数据。 例如:

显示包含建议作的示例数据的屏幕截图。

使用 IValueConverter 接口的示例数据

示例数据功能不完全支持转换器或 IValueConverter 接口。 但是,可以通过执行以下作之一或两项来使其正常工作:

  • 确保 Convert 函数可以处理值已是目标类型的方案。
  • 实现将 ConvertBack 值转换回原始类型的函数。

Troubleshooting

如果示例数据未显示任何内容或无法显示正确的类型,可以尝试刷新设计器或关闭并重新打开页面。

如果遇到本部分中未列出的问题,或者刷新页面无法修复的问题,请使用 “报告问题 ”工具告知我们。