Как получить контроль из DataTemplate и ControlTemplate? так много думает - PullRequest
0 голосов
/ 09 января 2012

Когда я определяю элемент управления в DataTemplate, как получить ссылку на этот элемент управления?

Если элемент управления в ControlTemplate of Style, как получить?

Ответы [ 2 ]

0 голосов
/ 09 января 2012

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

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

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

Приведенный выше запрос найдет все TextBoxsу которых Grid является прямым родителем.

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

0 голосов
/ 09 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...