从代码中在UWP中创建DataTemplate

时间:2016-10-18 16:09:50

标签: c# .net xaml uwp

我正在创建一个XAML解析器,为了与UWP类交互,我需要从代码生成DataTemplate

我已经看到DataTemplate类有LoadContent()方法,但我该如何使用它?是否有方法来指定必须加载哪些内容?

顺便说一句,我已尝试实施IDataTemplate界面,但由于它的 内部 ,我必须从{{{ 1}}。

1 个答案:

答案 0 :(得分:1)

  

我已经看到DataTemplate类有一个LoadContent()方法,但我该如何使用它?是否有方法来指定必须加载哪些内容?

您可以参考DataTemplate.LoadContent method,本文档中有示例代码,说明如何使用LoadContent方法在运行时更改边框的外观。这是指定必须加载哪些内容的方法。

我知道您可能希望在使用XAML Parser的代码中创建整个DataTemplate,但不能加载Resources中存在的代码,然后您可以像这样编写代码:< / p>

StringReader reader = new StringReader(
   @"<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
   <Ellipse Width=""300.5"" Height=""200"" Fill=""Red""/>
   </DataTemplate>");
var template = XamlReader.Load(await reader.ReadToEndAsync());
ListView lv = new ListView();
lv.ItemTemplate = template as DataTemplate;
ObservableCollection<int> coll = new ObservableCollection<int>();
for (int i = 0; i < 20; i++)
{
    coll.Add(i);
}
lv.ItemsSource = coll;
rootGrid.Children.Add(lv);

在这里,我使用XamlReader从字符串中解析了DataTemplate,并将此DataTemplate应用为ItemTemplate的{​​{1}}。