Как получить доступ к элементу управления WPF, расположенному в ControlTemplate?

StackOverflow https://stackoverflow.com/questions/820201

  •  03-07-2019
  •  | 
  •  

Вопрос

Обычно элементы управления WPF объявляются в файлах .xaml, а не в исходном коде (файлы.xaml.cs).Однако иногда мне нужно использовать некоторые из этих элементов управления в коде, чтобы манипулировать ими.Как я могу получить дескриптор такого элемента управления, если он "находится" в файле xaml?

Это было полезно?

Решение

Вы можете использовать метод FindName () класса ControlTemplate.

// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);

Другие советы

Я не уверен в том, о чем вы спрашиваете, поэтому я попытаюсь ответить на оба примера, которые я интерпретирую как ваш вопрос.

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".

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top