Обычно элементы управления WPF объявляются в файлах .xaml, а не в коде (файлы .xaml.cs). Однако иногда мне нужно использовать некоторые из этих элементов управления в коде для управления ими. Как я могу получить дескриптор такого элемента управления, если он "находится" в файле xaml?
Как получить доступ к элементу управления WPF, расположенному в ControlTemplate?
Ответ 1
Вы можете использовать метод FindName() класса ControlTemplate.
// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);
Ответ 2
Я не уверен, о чем вы спрашиваете, поэтому я попытаюсь ответить на оба экземпляра, которые я интерпретирую как ваш вопрос.
1) Если вы хотите объявить явный элемент управления, а затем отредактировать его напрямую, все, что вам нужно сделать, это установить свойство name следующим образом:
<Canvas x:Name="myCanvas"/>
Затем вы можете получить доступ к холсту через имя как таковое:
myCanvas.Background = Brushes.Blue;
2) Если вы хотите объявить общий элемент управления, а затем использовать его несколько раз, вы можете сделать это следующим образом:
<Window>
<Window.Resources>
<Ellipse x:Key="myEllipse" Height="10" Width="10">
</Window.Resources>
</Window>
Затем вы можете получить доступ к этому предопределенному элементу управления, используя этот синтаксис в коде:
Ellipse tempEllipse = (Ellipse)FindResource("MyEllipse");
Если вы хотите использовать ресурс как шаблон для нескольких элементов управления, добавьте x: Shared = "false".