将设计时数据从文件加载到 WinRT 代码中的 Blend

Loading design time data from file into Blend in code in WinRT

如果您在 Visual Studio 中创建开箱即用的 WinRT phone 应用程序,例如一个集线器应用程序(Windows 8.1 通用),生成的 XAML 在 XAML 中加载设计时数据,如下所示:

<HubSection 
    IsHeaderInteractive="True" 
    DataContext="{Binding Section3Items}" 
    d:DataContext="{Binding Groups[3], Source={d:DesignData Source=../HubApp1.Shared/DataModel/SampleData.json, Type=data:SampleDataSource}}"
    x:Uid="Section3Header"
    Header="Section 3"
    Padding="40,40,40,32">

从 JSON 文件解析的设计时数据在 Blend 中可见:

我想将 JSON 文件加载和解析从 XAML 移到 C# 中,并使其在 Blend 中仍然可用。我怎么做?我面临的挑战是,要在 Blend 中可用,我认为 C# 必须使用无参数构造函数。但是加载文件(在 WinRT 中)是异步的。因此,打开文件的方法必须标记为 async 并使用 await,或者使用 ContinueWith 延续。然而 async 和因此 await 在构造函数中是不允许的,并且在页面加载到 Blend 之后似乎会发生任何延续,并且不会反映在 Blend 设计视图中。

如何在 WinRT 代码中加载从文件解析的设计时数据到 Blend 中?

(N.B。这是 another question 的概括。)

您始终可以使用 task.Wait() 或 task.Result 阻塞等待任务完成的线程(如果您需要结果)。