Tôi không thể tìm thấy giải pháp sạch cho vấn đề sau đây mặc dù có một số câu hỏi liên quan đến SO.Phần tử truy cập bên trong Silverlight DataTemplate
Nếu tôi có mẫu dữ liệu đang được sử dụng nhiều lần, ví dụ: TreeViewItem.HeaderTemplate, làm cách nào tôi có thể thay đổi mẫu cho chỉ một số TreeViewItems.
Ví dụ: giả sử TVI HeaderTemplate của tôi có một khối chữ và tùy thuộc vào chuỗi, tôi muốn làm cho phông chữ đậm.
tôi muốn làm một cái gì đó như thế này:
((TextBlock)myTreeView.Items.ElementAt(0).FindName("myTextBlock")).FontWeight = FontWeights.Bold;
Có ai có một giải pháp cho việc này? -> Cảm ơn Evan
Chỉnh sửa: Có cách nào để viết hàm chung để kiểm soát dựa trên tên của nó ngay cả khi nó nằm trong mẫu dữ liệu?
LayoutRoot.FindName("myTextBlock");
sẽ hoạt động nếu myTextBlock không có trong bảng dữ liệu. Làm cách nào để viết một hàm findElementInDataTemplate(string elementName, string parentName)
?
Lý do câu trả lời của Evan không phải là điều tôi đang tìm kiếm là bởi vì tôi đang phát triển sự kiểm soát. Tôi muốn nhà phát triển ứng dụng sử dụng quyền kiểm soát của mình để có thể thay đổi bất kỳ phần tử nào trong điều khiển. Nếu tôi sử dụng giải pháp của Evan, điều đó sẽ yêu cầu nhà phát triển ứng dụng có quyền truy cập vào tất cả các mẫu trong điều khiển. Có thể, nhưng không lý tưởng. Cảm ơn!
Nếu bạn đã sử dụng một DataTemplate có chứa một điều khiển được gọi là "myTextBlock" nhiều lần và sau đó có một số loại của 'LayoutRoot.FindName ("myTextBlock") 'hoạt động, trong đó nhiều điều khiển được gọi là" myTextBlock "bạn sẽ muốn hoạt động đó trở lại? – AnthonyWJones
@AnthonyWJones Điểm tốt, được chỉnh sửa để bao gồm thông số parentName. – NickHalden
@AnthonyWJones: Thông thường hai điều khiển với tên là không thể. nếu bạn giữ hai điều khiển cùng tên trong mẫu, thì mẫu được coi là sai. – Mahantesh