1

VS新建项目截图

如果您在 Visual Studio 中创建开箱即用的 WinRT 手机应用程序,例如 Hub 应用程序(Windows 8.1 Universal),则生成的 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 中的代码中?

(注意这是对另一个问题的概括。)

4

1 回答 1

1

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

于 2015-06-10T10:44:31.107 回答