이미 몇 가지 관련 질문이 있지만 다음 문제에 대한 깨끗한 해결책을 찾을 수 없었습니다.Silverlight의 액세스 요소 DataTemplate
여러 번 사용되는 데이터 템플릿 (예 : TreeViewItem.HeaderTemplate)이있는 경우 일부 TreeViewItems에 대해서만 템플릿을 어떻게 변경할 수 있습니까?
예를 들어, 내 TVI HeaderTemplate에 텍스트 블록이 있고 문자열에 따라 글꼴 두께를 굵게 지정한다고 가정 해 보겠습니다.
이((TextBlock)myTreeView.Items.ElementAt(0).FindName("myTextBlock")).FontWeight = FontWeights.Bold;
사람이에 대한 해결책이 있습니까 :
나는 이런 일을하고 싶지? -> 감사합니다 에반
편집 :은 데이터 템플릿의 경우에도 그것의 이름을 기준으로 컨트롤을 얻을 수있는 일반적인 함수를 작성하는 방법이 있나요?
LayoutRoot.FindName("myTextBlock");
myTextBlock이 datatemplate에없는 경우 작동합니다. findElementInDataTemplate(string elementName, string parentName)
함수를 작성하려면 어떻게해야합니까?
Evan의 대답이 내가 원하는 것을 찾지 못하는 이유는 컨트롤을 개발하고 있기 때문입니다. 내 컨트롤을 사용하는 응용 프로그램 개발자가 컨트롤의 모든 요소를 변경할 수 있기를 바랍니다. Evan의 솔루션을 사용하면 응용 프로그램 개발자가 컨트롤의 모든 템플릿에 액세스 할 수 있어야합니다. 가능하지만 이상적은 아닙니다. 감사!
GRD = 루트 요소 (당신이 찾고있는 요소의 부모는) LayoutRoot.FindName'의 일종을 가지고
("myTextBlock")'조작, "myTextBlock"이라고 불리는 많은 컨트롤 중 어느 것이 조작을 되 돌리시겠습니까? – AnthonyWJones@AnthonyWJones parentName 매개 변수를 포함하도록 편집하는 것이 좋습니다. – NickHalden
@AnthonyWJones : 일반적으로 이름이있는 두 개의 컨트롤을 사용할 수 없습니다. 템플릿에 두 개의 동일한 이름 컨트롤을 유지하면 틀린 것으로 간주됩니다. – Mahantesh