Кто-нибудь знает, как добавить обработчик события F # в элемент управления в файле xaml?Добавить функцию f # как обработчик события в xaml
ответ
По сути вы должны загрузить файл XAML и найти элемент управления по имени:
let w = Application.LoadComponent(new System.Uri(
"/twitterstream;component/Window.xaml", System.UriKind.Relative
)) :?> Window
let b = w.FindName("buttonToggle") :?> Button
, а затем вы можете просто добавить обработчик события:
b.Click.Add(fun _ -> ...)
Вы можете получить фантазии и использовать комбинаторы событий первого класса - вот это большой шаг за шагом введение:
http://blogs.msdn.com/b/timng/archive/2010/05/06/f-wpf-events.aspx
Я только что рассказал о реактивном программировании в F # (в Лондоне), который использовал Silverlight для реализации большинства примеров. Разговор был записан и образцы доступны для загрузки, так что это может быть полезным ресурсом:
- Смотрите мой блог with links to source, recording and slide
Чтобы ответить на конкретный вопрос, я не думаю, что вы можете использовать обычный стиль указания обработчика событий в файле XAML (это может работать в приложении F # Silverlight, но вам нужно будет использовать member
вместо функции let
).
Однако, лучший способ (я могу придумать) для написания компонентов Silverlight - иметь только библиотеку Silverlight F # и использовать ее из приложения C# Silverlight. В этом случае вам нужно написать привязку обработчика события в коде. Упрощенный пример (из одного из примеров из разговора) будет выглядеть так:
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. F # Обработчик событий с использованием разметки XAML
- 2. Как добавить обработчик события Click в TextBlock на телефоны Window
- 3. додзё перетаскивание: как добавить обработчик события перетаскивания
- 4. Определение элемента как обработчика события в F #
- 5. Добавить обработчик события кнопки в C++
- 6. Где добавить обработчик события в javascript?
- 7. Добавить обработчик события в выбранный диапазон
- 8. Использовать периодическую функцию RTC (обработчик прошедшего события)
- 9. добавить новый JTextField в обработчик события
- 10. WPF/XAML обработчик события связывания в стиле с видом модели
- 11. C# WPF добавить события KeyBinding в XAML
- 12. Как добавить обработчик событий для отображения отображаемого события в Ember.js?
- 13. Ссылка на функцию функции как обработчик события в jQuery
- 14. Wicket: Как добавить обработчик события click в строку таблицы?
- 15. F #/WPF привязка события
- 16. Как удалить обработчик события document.onkeydown?
- 17. Как передать объект события в обработчик события
- 18. Добавить обработчик события нажатия только некоторых детей
- 19. jquery - добавить обработчик события к популяции объекта
- 20. Добавить обработчик события графического рисунка окрашены
- 21. Динамически добавить обработчик для события нажатия кнопки
- 22. Как добавить обработчик события в рычаг блока в Minecraft Forge?
- 23. Как добавить обработчик события в ToolStripButton в коде C#?
- 24. Как добавить обработчик события onClick в форму холста в Elm?
- 25. Добавить обработчик события click click для datagridview?
- 26. Добавить обработчик события во время инициализации объекта
- 27. Добавить обработчик события, когда флажок отключается
- 28. Как передать обработчик события обработчик пользовательского триггера
- 29. KeyDown обработчик события не работает
- 30. XAML ListBox привязка данных - Добавить обработчик привязки к каждому элементу