Мне не удалось найти решение для решения следующих проблем, хотя есть несколько связанных вопросов уже на SO.Элемент доступа внутри Silverlight DataTemplate
Если у меня есть шаблон данных, который используется несколько раз, например TreeViewItem.HeaderTemplate, как я могу что-то изменить шаблон только для некоторых из TreeViewItems.
Например, у моего TVI HeaderTemplate есть текстовый блок, и в зависимости от строки я хочу сделать шрифт полужирным.
Я хочу сделать что-то вроде этого:
((TextBlock)myTreeView.Items.ElementAt(0).FindName("myTextBlock")).FontWeight = FontWeights.Bold;
Кто-нибудь есть решение для этого? -> Thanks Evan
Редактировать: Есть ли способ написать общую функцию для получения элемента управления на основе его имени, даже если он находится в шаблоне данных?
LayoutRoot.FindName("myTextBlock");
будет работать, если myTextBlock не был вставлен в datatemplate. Как написать функцию findElementInDataTemplate(string elementName, string parentName)
?
Причина ответа Эвана не в том, что я ищу, потому что я разрабатываю элемент управления. Я хочу, чтобы разработчик приложения, который использует мой элемент управления, мог изменить любой элемент в элементе управления. Если я использую решение Evan, это потребует, чтобы разработчик приложения имел доступ ко всем шаблонам в элементе управления. Возможно, но не идеально. Благодаря!
Если вы использовали DataTemplate, который содержит элемент управления под названием «myTextBlock» несколько раз, а затем иметь какое-то 'LayoutRoot.FindName («myTextBlock») 'операция, какая из многих элементов управления, называемая« myTextBlock », вы хотите вернуть эту операцию? – AnthonyWJones
@ AnthonyWJones Хорошая точка, отредактированная для включения параметра parentName. – NickHalden
@AnthonyWJones: Обычно два элемента управления с именем невозможно. если вы сохраняете два одинаковых элемента управления в шаблоне, то шаблон считается неправильным. – Mahantesh