Các "câu trả lời" ở trên theo quan điểm của tôi không trả lời câu hỏi thực tế, và trong thực tế câu hỏi ban đầu chỉ ra rằng tác giả câu hỏi đã có một giải pháp rất hiệu quả cho vấn đề. Tuy nhiên, "câu trả lời" được cung cấp chỉ đơn giản cho thấy cách đính kèm một đối tượng phụ vào một TreeViewItem và cách sau đó trả về nó bằng cách sử dụng một phương thức tùy chỉnh. Trong khi điều này hữu ích, câu trả lời này không giải quyết được bản chất thực sự của câu hỏi gốc.
Có nhiều trường hợp trong đó TreeViewItem cần phải có một đối tượng bên ngoài được đính kèm mà không thuộc danh sách các mục của TreeViewItem. Điều này tạo điều kiện truy cập vào các đối tượng bên ngoài đính kèm cho các mục đích ứng dụng cụ thể khi người dùng chọn TreeViewItem từ TreeView. Khái niệm này hoàn toàn khác với ý tưởng thêm các đối tượng con vào một TreeViewItem.
Một phương pháp thay thế giải quyết vấn đề này, trái ngược với giải pháp ban đầu được thực hiện bởi tác giả câu hỏi, là phân lớp lớp TreeViewItem và thêm thông tin tùy chỉnh, chẳng hạn như đối tượng đính kèm. Nguyên tắc này được minh họa trong bài viết http://msdn.microsoft.com/en-us/library/1330h6a4.aspx. Sau khi thực hiện lớp con TreeViewItem tùy chỉnh này, lớp con này có thể được thêm vào danh sách các mục của một TreeView hoặc một TreeViewItem. Khi người dùng chọn mục từ TreeView, đối tượng được trả về từ vùng chọn sẽ là lớp con tùy chỉnh, sẽ chứa bất kỳ thông tin tùy chỉnh nào mà lớp con đã định nghĩa.
Một lợi thế bổ sung khi sử dụng lớp con TreeViewItem tùy chỉnh thay vì TreeViewItem là hành vi tùy chỉnh có thể được thực hiện bởi lớp con. Ví dụ: để hiển thị chú giải công cụ tùy chỉnh khi người dùng di chuột qua mục, lớp con có thể đặt đối tượng ToolTip cho chính nó bằng mã như:
ToolTip tip = new ToolTip() { Content = "Tooltip display value" };
ToolTipService.SetToolTip(this, tip);
Nguồn
2011-09-18 23:40:16
Cảm ơn câu trả lời. Làm thế nào để thực hiện một "lồng nhau HierarchicalDataTemplate" để nói chuyện? Ví dụ, các mục trong binding ItemsSource có một danh sách khác bên trong chúng, và tôi muốn danh sách là một danh sách con của chúng. –
np Dreas. Bạn có thể đánh dấu là câu trả lời và hỏi một câu hỏi riêng biệt về HierarchicalDataTemplates lồng nhau không? –
Xin chào Kent, sẽ làm. –