将设计时数据从文件加载到 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 阻塞等待任务完成的线程(如果您需要结果)。
如果您在 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 阻塞等待任务完成的线程(如果您需要结果)。