2016-10-18 2 views
0

Я создаю парсер XAML и для взаимодействия с классами UWP мне нужно сгенерировать код DataTemplate.Создание DataTemplate в UWP из кода

Я видел, что класс DataTemplate имеет метод LoadContent(), но как его использовать? Есть ли способ указать, какой контент должен быть загружен?

Кстати, я пытаюсь реализовать интерфейс IDataTemplate, но так как это внутренний, я должен был получить от DataTemplate.

ответ

1

Я видел, что класс DataTemplate имеет метод LoadContent(), но как его можно использовать? Есть ли способ указать, какой контент должен быть загружен?

Вы можете обратиться к DataTemplate.LoadContent method, есть пример кода в этом документе, показывающий, как использовать метод LoadContent, чтобы изменить внешний вид границы во время выполнения. Это способ указать, какой контент должен быть загружен.

Я понимаю, что вы можете создать в коде за помощью XAML Parser весь DataTemplate, но не загружать тот, который существует в Resources, то вы можете закодировать, например, как это:

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 как ItemTemplate of ListView.

+0

Спасибо, Грейс! Это нормально для 99% разработчиков. Для меня это не так долго, пока я хочу, чтобы мой собственный XAML-парсер с нуля создавал шаблон данных. Мне нужно собрать сам DataTemplate. Я не использую XamlReader, но мой OmniXAML (v2), который является кросс-платформенным. Я нахожу проблемы с UWP и с WPF, потому что они скрывают так много, что практически невозможно контролировать полный процесс создания шаблонов. – SuperJMN

+1

@SuperJMN, да, вы правы, я думаю, что это невозможно в UWP тоже. Можно ли использовать собственный метод для каждой другой платформы, например, в xamarin? В xamarin он использует 'DependencyService' для соответствия каждой платформе. Извините, здесь я не мог помочь. –

+0

Нет, боюсь, это не так. Хотя это возможно, мой синтаксический анализатор должен быть альтернативой: читать и раздувать модель без использования какого-либо другого синтаксического анализатора. Опираясь на другой синтаксический анализатор, чтобы раздуть DataTemplate, он обрывает его весь смысл :( – SuperJMN

Смежные вопросы