Giả sử rằng tôi đã có XAML đại diện cho một Grid với một số trẻ em trong đó, mỗi đứa trẻ là một điều khiển khác nhau, với một x: Tên. Làm thế nào để "có được" những điều khiển từ mã theo tên?Silverlight 3.0: Làm thế nào để tôi nhận được trẻ em lưới bằng x: Tên?
Trả lời
Nếu mã bạn đang viết nằm trong tệp mã-đằng sau cho tệp xaml, thì Visual Studio sẽ tự động tạo biến thành viên chứa tham chiếu đến bất kỳ phần tử nào có tên trong tệp xaml. Vì vậy, nếu bạn có một Button với x: Name = "myButton", bạn có thể truy cập nút này thông qua this.myButton.
Nếu bạn muốn tham khảo một yếu tố được đặt tên từ một nơi nào khác hơn là code-behind file, bạn có thể gọi FindName vào yếu tố để các yếu tố được đặt tên, ví dụ:
Button myButton = myGrid.FindName("myButton") as Button;
nơi myGrid là một tham chiếu đến Lưới được đề cập.
Mỗi điều khiển có dấu x: Tên có trường được tạo cho nó trong lớp từng phần được tạo cho XAML. Trường này có khả năng truy cập nội bộ. Do đó từ mã với trong "code-behind" cs (tại sao tôi ghét thuật ngữ đó?) Bạn chỉ có thể sử dụng tên điều khiển trực tiếp trong mã để truy cập nó.
Bạn có thể tử tế và công phu như vậy không? – Maciek
Tôi nghĩ rằng anh ta có nghĩa là, nếu bạn có x: Name = "MyNamedControl". Khi bạn biên dịch nó, tệp Reference.g sẽ tự động có sẵn để bạn có thể chỉ cần nhập this.MyNamedControl – Paully
Nhưng nếu bạn đang làm template, điều này sẽ không xảy ra và bạn nên sử dụng FindName – Paully
- 1. Làm thế nào để bạn ràng buộc trẻ em của một mạng lưới vào danh sách?
- 2. Làm thế nào để nhận được giá trị trả lại từ TRÌNH TRẺ EM?
- 3. Nhận dạng xem trẻ em trong RelativeLayout
- 4. Tương đương Silverlight 3.0 cho BaseOn = "{StaticResource {x: Type TextBlock}}"
- 5. Làm thế nào để có được mức độ đầu tiên của trẻ em bởi LINQ
- 6. Làm thế nào để có được tất cả trẻ em của một kiểm soát cha mẹ?
- 7. Làm cách nào để đếm số trẻ em?
- 8. Java swing "trẻ em" windows
- 9. Trẻ em của XElement
- 10. Đưa trẻ em vào sitecore
- 11. xpath: Có cách nào để nhận tất cả văn bản của trẻ em trong xpath
- 12. Làm thế nào để sử dụng NSPredicate để bắt các đối tượng trẻ em?
- 13. Làm thế nào để sử dụng System.Linq.Expressions.Expression để lọc dựa trên trẻ em?
- 14. thêm trẻ em vào QMainWindow
- 15. Làm thế nào để chọn phụ huynh dựa trên trẻ em trong lxml?
- 16. Làm thế nào để bỏ qua sự kiện nhấp khi nhấp vào trẻ em
- 17. Làm thế nào để sử dụng nth-child chỉ với trẻ em trực tiếp?
- 18. Làm thế nào để thêm một mạng lưới bên trong một người xem Scroll lập trình
- 19. Grails nhận được bất kỳ trẻ em nào trong một hasMany
- 20. SQLAlchemy làm thế nào để lọc theo trẻ em trong nhiều đến nhiều
- 21. Lấy hồ sơ trẻ em bằng cách sử dụng LINQ
- 22. jstree jquery plugin - Nhận tất cả trẻ em và trẻ tiểu hạch của cha mẹ
- 23. Làm thế nào để thay đổi thứ tự z của trẻ em Wpf AdornerLayer?
- 24. Nhận các lớp học trẻ em từ lớp cơ sở
- 25. Sử dụng JQuery event.target để làm việc với trẻ em
- 26. Làm thế nào để tham gia lại tìm nạp nhiều trẻ em trong Hibernate?
- 27. Làm thế nào để thực hiện một minh bạch Pane với trẻ em không minh bạch?
- 28. Làm thế nào để ngăn chặn trẻ em ảnh hưởng đến phụ huynh
- 29. Trẻ em trong một GridView
- 30. jquery chọn iframe trẻ em
woot! những công việc này. Tôi tìm thấy một giải pháp thay thế phức tạp hơn một chút nhưng cũng hoạt động: Nút riêng myButtnon; foreach (FrameWorkElement fe trong myGrid.Children) { nếu (fe.GetType() == typeof (Nút) myButton = fe làm nút; } – Maciek
Lưu ý rằng myButton sẽ là trường có khả năng truy cập nội bộ do đó thậm chí từ mã bên ngoài các tập tin mã phía sau bạn có thể truy cập nó mà không cần đến FindName – AnthonyWJones
nếu bạn có bất kỳ ý tưởng bao lâu tôi tìm kiếm câu trả lời đơn giản này! cảm ơn cho câu hỏi thẳng là tốt – Arrie