Я видел, что класс 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
.
Спасибо, Грейс! Это нормально для 99% разработчиков. Для меня это не так долго, пока я хочу, чтобы мой собственный XAML-парсер с нуля создавал шаблон данных. Мне нужно собрать сам DataTemplate. Я не использую XamlReader, но мой OmniXAML (v2), который является кросс-платформенным. Я нахожу проблемы с UWP и с WPF, потому что они скрывают так много, что практически невозможно контролировать полный процесс создания шаблонов. – SuperJMN
@SuperJMN, да, вы правы, я думаю, что это невозможно в UWP тоже. Можно ли использовать собственный метод для каждой другой платформы, например, в xamarin? В xamarin он использует 'DependencyService' для соответствия каждой платформе. Извините, здесь я не мог помочь. –
Нет, боюсь, это не так. Хотя это возможно, мой синтаксический анализатор должен быть альтернативой: читать и раздувать модель без использования какого-либо другого синтаксического анализатора. Опираясь на другой синтаксический анализатор, чтобы раздуть DataTemplate, он обрывает его весь смысл :( – SuperJMN