虽然SO上已有一些相关问题,但我仍未能找到一个干净的解决方案。
如果我有一个数据模板被多次使用,例如TreeViewItem.HeaderTemplate,我该如何仅更改其中某些TreeViewItem的模板?
例如,假设我的TVI HeaderTemplate拥有一个文本块,并且根据字符串不同,我想让字体加粗。
我希望做到这样:
((TextBlock)myTreeView.Items.ElementAt(0).FindName("myTextBlock")).FontWeight = FontWeights.Bold;
有没有人有解决这个问题的方案?--> 谢谢 Evan
编辑:是否有一种通用的方法来根据名称获取控件,即使它在数据模板中也可以?
LayoutRoot.FindName("myTextBlock");
如果 myTextBlock 不在数据模板中,则可以使用。如何编写一个 findElementInDataTemplate(string elementName, string parentName)
函数?
Evan的答案不是我要找的,因为我正在开发一个控件。我希望使用我的控件的应用程序开发人员能够更改控件中的任何元素。如果我使用Evan的解决方案,那将需要应用程序开发人员访问控件中的所有模板。这是可能的,但不理想。谢谢!
LayoutRoot.FindName("myTextBlock")
操作中多次使用它,那么您希望该操作返回哪个名为“myTextBlock”的控件? - AnthonyWJones