У меня есть несколько текстовых блоков в моем корневом расположении пользовательского элемента управления, проблема в том, как я могу найти конкретный текстовый блок по его имени?
Спасибо
3 ответа
var myElement =
((FrameworkElement)System.Windows.Application.Current.RootVisual)
.FindName("TextBlockName");
Должен работать в этом случае, если текстовый блок уже был отрисован.
Чтобы иметь возможность легко перемещаться по визуальному дереву в более общем смысле, как упомянуто в @ColinE, вы также можете использовать набор инструментов Silverlight.
// requires System.Windows.Controls.Toolkit.dll
using System.Windows.Controls.Primitives;
var myElement = myRoot.GetVisualDescendants().OfType<TextBlock>()
.Where(txb => txb.Name == "TextBlockName").FirstOrDefault();
Если вы создаете UserControl, любой элемент, который вы называете через x:Name
, должен быть доступен вам как поле в вашем коде программной части.
Если вы не создаете UserControl, вы можете выполнить поиск в визуальном дереве с помощью Linq to VisualTree...
TextBlock block = LayoutRoot.Descendants<TextBlock>()
.Cast<TextBlock>()
.SingleOrDefault(t => t.Name == "TextBlockName");
Привет, Масн, в моем случае я написал код и похожие условия, и все в порядке. это так (есть много списков и именованных переменных, различающихся по номерам в конце имени. Пример: listAttachment1, listAttachment2, listAttachment3, .., и т. д.). Для лучшего объяснения покажите мой код:
Public void refreshAttachmentList (ListlistOfControlsRequest, int идентификатор) {
string valueName = "attachmentsField_"+identifier;
var mylistAttachment = ((FrameworkElement)System.Windows.Application.Current.RootVisual).FindName(valueName);
ListBox listAttachRequest = mylistAttachment as ListBox;
listAttachRequest.ClearValue(ItemsControl.ItemsSourceProperty);
listAttachRequest.ItemsSource = listOfAttachmentsControls;
listAttachRequest.....all properties
}
Похожие вопросы
Новые вопросы
silverlight
Silverlight - кросс-браузерный, кроссплатформенный плагин Microsoft для работы со СМИ и многофункциональных интерактивных приложений.