Có ai biết cách thêm trình xử lý sự kiện F # vào điều khiển trong tệp xaml không?Thêm hàm f # làm trình xử lý sự kiện trong xaml
Trả lời
Về cơ bản bạn cần phải tải một file XAML và tìm một điều khiển theo tên:
let w = Application.LoadComponent(new System.Uri(
"/twitterstream;component/Window.xaml", System.UriKind.Relative
)) :?> Window
let b = w.FindName("buttonToggle") :?> Button
và sau đó bạn có thể đơn giản thêm một handler một sự kiện:
b.Click.Add(fun _ -> ...)
Bạn có thể nhận được ưa thích và sử dụng tổ hợp sự kiện hạng nhất - dưới đây là giới thiệu từng bước tuyệt vời:
http://blogs.msdn.com/b/timng/archive/2010/05/06/f-wpf-events.aspx
Tôi vừa nói chuyện về lập trình phản ứng trong F # (ở London) đã sử dụng Silverlight để thực hiện hầu hết các ví dụ. Buổi nói chuyện đã được ghi nhận và các mẫu có sẵn để tải về là tốt, vì vậy đây có thể là một nguồn tài nguyên hữu ích:
- Xem blog của tôi with links to source, recording and slide
Để trả lời câu hỏi cụ thể của bạn, tôi không nghĩ rằng bạn có thể sử dụng kiểu thông thường để chỉ định trình xử lý sự kiện trong tệp XAML (điều này có thể làm việc trong Ứng dụng Silverlight F #, nhưng bạn sẽ phải sử dụng member
thay vì chức năng let
).
Tuy nhiên, cách tốt nhất (tôi có thể nghĩ ra) để viết các thành phần Silverlight là chỉ có Thư viện Silverlight F # và sử dụng nó từ ứng dụng C# Silverlight. Trong trường hợp đó, bạn cần phải viết ràng buộc xử lý sự kiện trong mã. Ví dụ đơn giản (từ một trong các mẫu từ cuộc nói chuyện) sẽ trông giống như sau:
open System.Windows.Controls
// Dynamic invoke operator that makes accessing XAML elements easy
// (easier than using 'FindName' explicitly in the code
let (?) (this : Control) (prop : string) : 'T = // '
this.FindName(prop) :?> 'T // '
type MyControl() as this =
inherit UserControl()
do
let path = "/MyProject;component/MyControl.xaml"
let uri = new System.Uri(path, UriKind.Relative)
Application.LoadComponent(this, uri)
// Get Button named 'TestButton' from the XAML file
let btn : Button = this?TestButton
// Add event handler to the button
btn.Add(fun _ -> btn.Text <- "Clicked!")
- 1. Thêm nhiều trình xử lý sự kiện cho một sự kiện trong XAML?
- 2. Google Maps v3 InfoBox Thêm Trình xử lý Sự kiện
- 3. Thêm trình xử lý sự kiện nhấp chuột vào Pushpin
- 4. Thêm trình xử lý sự kiện cho ListView Items_added
- 5. Thêm trình xử lý sự kiện nhấp vào iframe
- 6. Làm mới trình xử lý sự kiện Javascript
- 7. Thêm xử lý sự kiện riêng trước xử lý sự kiện khác
- 8. Thêm và xóa Trình xử lý sự kiện ẩn danh
- 9. Thêm trình xử lý sự kiện vào main() cho SerialPort
- 10. Sự khác biệt giữa Trình xử lý sự kiện & Trình xử lý sự kiện trong Java là gì?
- 11. Sự khác biệt, nếu có, giữa trình xử lý sự kiện và trình xử lý sự kiện?
- 12. Làm thế nào để đưa trình xử lý sự kiện vào các sự kiện với Unity
- 13. Truyền dữ liệu sự kiện trong trình xử lý sự kiện nội tuyến
- 14. VB.NET 2005 - Trình xử lý sự kiện "Toàn cầu"?
- 15. jQuery nhiều trình xử lý sự kiện - Cách hủy?
- 16. Thừa kế các trình xử lý sự kiện trong C#
- 17. Làm cách nào để thêm trình xử lý sự kiện CSS AnimationEnd vào tiện ích GWT?
- 18. Xử lý sự kiện trong DART
- 19. Làm cách nào để thêm trình xử lý sự kiện thông qua Fluent NHibernate?
- 20. Làm cách nào để xóa trình xử lý sự kiện trong javascript?
- 21. Xử lý sự kiện trong Haskell
- 22. Cách thêm trình xử lý sự kiện vào biến cục bộ trong VB.NET
- 23. Cú pháp để thêm trình xử lý sự kiện trong VB.NET
- 24. Gỡ bỏ đúng trình xử lý sự kiện ẩn danh
- 25. Đang chờ sự kiện được xử lý
- 26. Các xử lý sự kiện để chọn
- 27. Tạo trình xử lý sự kiện C# trống
- 28. Trình xử lý sự kiện có được xử lý không đồng bộ không?
- 29. JQUERY, Thêm Trình xử lý sự kiện vào các mục trong iFrame?
- 30. Trình xử lý sự kiện theo cú pháp/mẫu C# -