0

我是 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# 代码以返回选定的列表视图项?

4

1 回答 1

1

不要使用代码隐藏中定义的函数订阅事件。相反,将事件转换为示例中的这样的命令。然后绑定到从 a 中选择的项目,如在示例中所做的那样。EventBindingsAndBehaviorsListViewSubModelSelectedItem

于 2020-09-27T15:52:17.647 回答