ControlTemplate에있는 WPF 컨트롤에 액세스하는 방법은 무엇입니까?
-
03-07-2019 - |
문제
일반적으로 WPF 컨트롤은 .xaml 파일에 선언되어 있으며 (.xaml.cs 파일) 코드가 아닌. 그러나 때로는 코드를 조작하기 위해 코드에 일부 컨트롤을 사용해야합니다. XAML 파일에 "상주"하는 경우 그러한 컨트롤의 핸들을 어떻게 얻을 수 있습니까?
해결책
ControlTemplate 클래스의 FindName () 메소드를 사용할 수 있습니다.
// Finding the grid that is generated by the ControlTemplate of the Button
Grid gridInTemplate = (Grid)myButton1.Template.FindName("grid", myButton1);
다른 팁
나는 당신이 무엇을 요구하는지 잘 모르겠으므로, 내가 당신의 질문으로 해석하는 두 가지 사례에 답할 것입니다.
1) 명시 적 통제를 선언 한 다음 직접 편집하려면 이름 속성을 다음과 같은 이름으로 설정하기 만하면됩니다.
<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"를 추가하십시오.
제휴하지 않습니다 StackOverflow