<Button Click="MyClickMethod" />
отлично работает;провайдер типа XAML представляет MyClickMethod
как виртуальный метод в выделенном фрагменте кода.
С другой стороны, override this.MyDoubleClickMethod (_, _)
получает довольно красное подчеркивание для <ListBox MouseDoubleClick="MyDoubleClickMethod" />
, и, конечно, моя программа не может скомпилироваться.
Если события ListBox
не поддерживаются, то было бы неплохо знать это, прежде чем я потратил три дня на кодирование своего приложения.Хорошо ли задокументирован FsXaml (и я не имею в виду исходный код)?Какой общепринятый способ решения моей проблемы?
РЕДАКТИРОВАТЬ: Вот мои файлы кода (минус AssemblyInfo.fs
и App.*
шаблон) в порядке обозревателя решений:
MainViewModel.fs:
namespace MyWpf.ViewModels
open ViewModule
open ViewModule.FSharp
type MainViewModel () as self =
inherit ViewModelBase ()
let myItems = self.Factory.Backing (<@ self.MyItems @>, Array.empty)
do
self.MyItems <- [| "cheeseburger"; "French fries"; "chocolate shake" |]
member this.MyItems
with get () = lock myItems (fun () -> myItems.Value)
and private set value = lock myItems (fun () -> myItems.Value <- value)
MainView.xaml.fs:
namespace MyWpf.Views
open System.Windows
type MainViewBase = FsXaml.XAML<"MainView.xaml">
type MainView () =
inherit MainViewBase ()
override this.MyDoubleClickMethod (_, _) = MessageBox.Show "click!" |> ignore
MainView.xaml:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:viewModels="clr-namespace:MyWpf.ViewModels;assembly=MyWpf">
<UserControl.DataContext>
<viewModels:MainViewModel />
</UserControl.DataContext>
<Grid>
<ListBox
Name="MyList"
Width="300"
Height="224"
Margin="10,4,10,4"
HorizontalAlignment="Center"
VerticalAlignment="Center"
ItemsSource="{Binding MyItems}"
MouseDoubleClick="MyDoubleClickMethod" />
</Grid>
</UserControl>
MainWindow.xaml.fs:
namespace MyWpf.Windows
type MainWindow = FsXaml.XAML<"MainWindow.xaml">
MainWindow.xaml:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:views="clr-namespace:MyWpf.Views;assembly=MyWpf"
Width="320"
Height="240"
ResizeMode="CanMinimize"
WindowStartupLocation="CenterScreen">
<Grid>
<views:MainView />
</Grid>
</Window>