我是 Elmish 的新手。
WPF 绑定将自定义控件用作:
local:AppointmentListView.ScheduledAppointment ="AppointmentDataGrid_ScheduledAppointment"
我有一个 C# 自定义 ListView 在选择列表视图项时引发以下路由事件:
private void AppointmentListView_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
var item = (sender as ListView).SelectedItem;
if ((IVisit)item != null)
{
ScheduledAppointmentEventArgs args = new ScheduledAppointmentEventArgs(ScheduledAppointmentEvent, (IVisit)item);
RaiseEvent(args);
}
}
我不需要“IVisit”的 C# 转换,但我确实需要从 F# 模型中选择的列表视图项是访问类型。也就是说,我需要实际的对象约会密钥。但我得到的是: “Elmish.WPF.ViewModel<object, object>”
ListView 的 itemsSource 在 Elmish.WPF 中定义为“AppointmentKeys”:
type Model =
{ AppointmentKeys: Visit.Model list
Id: int
}
let bindings() =[
"AppointmentKeys" |> Binding.subModelSeq(
(fun (_, m) -> m.AppointmentKeys),
(fun v -> v.Id),
Visit.bindings
)
那么,问题来了:在后面的代码中,如何从ListView中返回用户选择的F#记录?
更具体地说,当“SelectedItem”来自 MouseButtonEvents 上的代码隐藏绑定时,如何编写 F# 代码以返回选定的列表视图项?