以编程方式设置HubSection ContentTemplate

时间:2013-11-14 15:58:33

标签: wpf templates

我正在为Windows 8开发应用程序,并且正在使用Hubs和HubSections。 我要做的是根据我获取的JSON创建多个HubSections。 我遇到的问题是,当我尝试设置新的HubSection ContentTemplate时,程序崩溃指向global::System.Diagnostics.Debugger.Break();

HubSection hs = new HubSection();
hs.ContentTemplate = this.Resources["canteenSectionDataTemplate"] as DataTemplate;

问题是,如果我将hs.ContentTemplate设置为已存在的HubSection的ContentTemplate,它可以正常工作,所以我认为问题与未加载的模板有关吗?

1 个答案:

答案 0 :(得分:1)

这不会解决您的问题,但值得注意的是,由于多种原因,这样做是相当糟糕的做法:

HubSection hs = new HubSection();
hs.ContentTemplate = this.Resources["canteenSectionDataTemplate"] as DataTemplate;

使用as关键字时,应该始终检查null(除非您毫无疑问地知道它永远不会是null,在这种情况下,您可以施展价值):

HubSection hs = new HubSection();
DataTemplate canteenSectionDataTemplate = this.Resources["canteenSectionDataTemplate"] 
    as DataTemplate;
if (canteenSectionDataTemplate != null) 
    hs.ContentTemplate = canteenSectionDataTemplate;

除了处理null错误之外,此代码还可让您检查canteenSectionDataTemplate DataTemplate 是否 null

关于您的问题,canteenSectionDataTemplate DataTemplate是否等于null?如果是的话,这个代码从哪里调用?您可能需要推迟它才能使其正常工作。