programing

코드백 내에서 제어 템플릿의 요소에 액세스하는 방법

subpage 2023. 4. 29. 09:20
반응형

코드백 내에서 제어 템플릿의 요소에 액세스하는 방법

콘텐츠 컨트롤의 컨트롤 템플릿 내에 있는 사용자 컨트롤에 액세스하려고 합니다.구체적으로:

  <ContentControl x:Name="MyList" >
        <ContentControl.Template>
            <ControlTemplate x:Name="MyControlTemplate">
                <Border RenderTransformOrigin="0,0" x:Name="border">
                    <UserControls:MyControl x:Name="MyControlName" Width="100" ViewModel="{Binding}" />

제가 접근할 수 있습니다.내 목록인데 이렇게 나와요.내 컨트롤 이름을 찾을 수 없습니다.이 경우 코드백에서 MyControlName 개체에 액세스하려면 어떻게 해야 합니까?

감사합니다!

템플릿을 가져와 템플릿 컨트롤에서 이름별로 컨트롤을 찾아야 합니다. 다음과 같은 작업이 수행됩니다.

var template = MyList.Template;
var myControl = (MyControl)template.FindName("MyControlName", MyList);

템플릿이란 다음과 같은 것입니다. 생성할 내용에 대한 추상적인 설명, 템플릿의 컨트롤은 템플릿을 만드는 대상의 컨텍스트에만 존재합니다.


템플릿이 사용되는 컨트롤을 작성하는 경우에만 컨트롤 템플릿 내의 요소에 액세스해야 합니다.외부에서 액세스하려면 바인딩된 속성과 메서드를 통해 액세스해야 합니다.

데이터 템플릿의 경우도 이와 유사합니다.액세스해야 하는 모든 항목은 개체에 바인딩되어야 하며 액세스는 해당 개체를 통해 이루어져야 합니다.특히 항목을 가상화하는 항목 제어의 경우에는 해당 요소가 대부분 존재하지 않습니다.

U는 또한 Loaded 이벤트를 컨트롤에 추가한 다음 코드에서 이벤트의 보낸 사람을 특정 변수에 할당하여 모든 템플릿에서 제어할 수 있습니다.

언급URL : https://stackoverflow.com/questions/8126700/how-do-i-access-an-element-of-a-control-template-from-within-code-behind

반응형