/ / W jaki sposób uzyskać dostęp do elementu szablonu kontrolnego z wewnątrz kodu z tyłu - wpf, składnia, kontrolki użytkownika, kodowanie

W jaki sposób uzyskać dostęp do elementu szablonu kontrolnego z wewnątrz kodu z tyłu - wpf, składnia, kontrolki użytkownika, kodowanie z tyłu

Próbuję uzyskać dostęp do formantu użytkownika, który jest wewnątrz szablonu kontroli kontroli treści.

  <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}" />

Mogę uzyskać dostęp do this.MyList, ale jest napisane, że this.MyControlName nie został znaleziony. Jak uzyskać dostęp do obiektu MyControlName z opóźnieniem kodu w tej sytuacji?

Dzięki!

Odpowiedzi:

67 dla odpowiedzi № 1

Musisz pobrać szablon i zlokalizować kontrolkę według nazwy na szablonie, na przykład:

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

Szablony są po prostu następujące: abstrakcyjne opisy tego, co ma zostać stworzone, elementy sterujące w szablonach istnieją tylko w kontekście czegoś, co jest szablonowane.


Zauważ, że powinieneś tylko uzyskać dostęp do elementów wewnątrz szablon kontrolny jeśli tworzysz formant, dla którego przeznaczony jest szablon. Dostęp z zewnątrz powinien odbywać się za pośrednictwem powiązanych właściwości i metod.

Dla szablony danych to jest podobne. Wszystkie rzeczy, do których musisz mieć dostęp, powinny być związane z obiektem, a dostęp powinien być przez ten obiekt. Jest to szczególnie ważne w przypadku elementów sterujących, które wirtualizują swoje elementy, więc elementy nie istnieją nawet przez większość czasu.


6 dla odpowiedzi nr 2

U można również uzyskać kontrolę nad każdym szablonem, dodając do niego załadowane zdarzenie, a następnie w kodzie przypisać nadawcę zdarzenia do pewnej zmiennej.