2012-01-09 4 views

ответ

0

Вы должны сказать нам, почему вам нужно будет ссылаться на элемент управления внутри шаблона.

Учтите, что элемент управления будет отображаться несколько раз, поэтому получение одной ссылки просто не имеет смысла.

+0

Я хочу изменить статус управления, например: IsEnable или Visibility. –

+1

Вы должны использовать привязку данных для таких свойств или триггеров стиля. –

0

Наиболее распространенный подход к этому заключается в том, чтобы «назвать» элемент, который вы хотите найти, через x:Name="MyElementName", затем вы можете использовать метод FindName для поиска элемента имен. Если ваш DataTemplate используется в ItemsControl для рендеринга нескольких копий разметки YAMA XAML, то ясно, что будет несколько элементов, которые имеют одно и то же имя. По этой причине существует концепция, известная как XAML namescope, вы должны прочитать об этом, чтобы понять объем имени, которое вы предоставляете.

Если вам требуется более общий способ для поиска элементов в визуальном дереве, попробуйте Linq-to-VisualTree, вы можете использовать его для запроса вам пользовательский интерфейс, например:

var itemsFluent = this.Descendants<TextBox>() 
         .Where(i => i.Ancestors().FirstOrDefault() is Grid); 

Этот запрос будет найти все TextBoxs что имеют Grid в качестве прямого родителя.

И наконец, если вы можете избежать этого, используя привязку данных или пузырьковое событие, сделайте это! это намного проще.