我正在创建一个XAML解析器,为了与UWP类交互,我需要从代码生成DataTemplate
。
我已经看到DataTemplate
类有LoadContent()
方法,但我该如何使用它?是否有方法来指定必须加载哪些内容?
顺便说一句,我已尝试实施IDataTemplate
界面,但由于它的 内部 ,我必须从{{{ 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}}。