感觉很幸运。自己找到的。这是最简单的方法。
创建一个具有相同公共属性的虚拟类(重要的是您将成员定义为属性而不是字段)。例如:
public class Dummy
{
public string Subject { get; set; }
public string Body { get; set; }
public DateTime DueDateStart { get; set; }
}
通过在顶部添加以下导入将您的项目命名空间导入 XAML:
xmlns:local="clr-namespace:YourProjectNamespace"
现在您可以在设计时向 DataGrid 添加项目(行),例如(确保您的列具有正确的绑定):
<DataGrid AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Subject" Binding="{Binding Path=Subject}"/>
<DataGridTextColumn Header="Body" Binding="{Binding Path=Body}"/>
<DataGridTextColumn Header="Due Date" Binding="{Binding Path=DueDateStart}"/>
</DataGrid.Columns>
<local:Dummy Subject="Subject 1" Body="Body 1" ... />
<local:Dummy Subject="Subject 2" Body="Body 2" ... />
</DataGrid>
希望这对某人有帮助!
更新
由于这是一个受欢迎的帖子,我想我应该用标准的做事方式来更新它。
WPF 支持一个被称为设计时数据的概念,它服务于这个确切的目的。与我上面提到的方法相比,使用设计时数据的几个主要优点包括:
- 设计时数据与应用程序功能保持分离。
- 您根本不需要更改任何东西来在设计和运行模式之间切换控件。
- 数据存在于易于编辑的 XML 文件中。
以下是创建设计时数据文件的步骤:
- 在 Blend 中打开您的项目(VS2015 和 VS2017 免费提供)。
- 打开您的视图(您正在使用的窗口或控件)。
- 从数据工具窗口(默认与解决方案资源管理器停靠)中,选择Create Sample Data From Class。
- 选择您的 VM 类。您应该选择控件在运行时实际使用的类作为其
DataContext
.
Blend 将创建一个 XML 文件,其中会自动为您填写示例数据。该文件将如下所示:
<local:TestDataList xmlns:local="clr-namespace:YourNamespaceHere" Capacity="46" ID="33" Name="Maecenas curabitur cras">
<local:TestData ID="66" Name="Aenean vestibulum class"/>
<local:TestData ID="34" Name="Duis adipiscing nunc praesent"/>
<local:TestData ID="91" Name="Accumsan bibendum nam"/>
</local:TestDataList>
需要注意的是,您不需要 Blend 来生成此文件。您也可以手动执行此操作。
现在在您的 DataGrid(或您正在使用的任何控件)中,添加以下属性(根据您的项目更改文件路径):
d:DataContext="{d:DesignData Source=SampleData/TestDataListSampleData.xaml}"
- 鉴于您的控件已正确设置其属性(例如
ItemsSource
等Columns
),示例数据将立即开始在设计器中显示。
只是为了完成,请注意 Blend 无法为泛型类生成自动数据。例如,如果您的 VM 类包含一个类型的属性List<string>
(或者如果 VM 类本身是一个泛型类),您将不会在示例数据文件中看到该属性生成。在这种情况下,您必须创建自己的从泛型类继承的虚拟类,然后将其用作属性的类型。例如:
public class MyListOfStrings : List<string>
{ }