문제

일반적으로 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"를 추가하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top