【问题标题】:How to implement RefreshCommand for ListView in Xamarin.Froms with F#如何使用 F# 在 Xamarin.Forms 中实现 ListView 的刷新命令
【发布时间】:2016-06-30 13:14:59
【问题描述】:

我的 Xamarin.Forms 项目包含 F# 中的共享 PCL。我已经为我的列表视图实现了 RefreshCommand,但它什么也没做。应该怎么写?

这是 ListView 中 SomePage.xaml 的一部分:

<ListView x:Name="someList"
    IsPullToRefreshEnabled="true"
    RefreshCommand="{Binding LoadListCommand}">

这是我的 SomePage.fs:

type SomePage() = 
    inherit ContentPage()

    let _ = base.LoadFromXaml(typeof<SomePage>)
    let someList = base.FindByName<ListView>("someList")

    do someList.ItemsSource <- sList

    let someFun arg =   
        someList.ItemsSource <- arg :: sList
        someList.IsRefreshing <- false

    member this.LoadListCommand = new Command(fun() -> someFun s3)

【问题讨论】:

  • someFun 是一个值,而不是一个函数。为了使它成为一个函数,给它一些参数。
  • @FyodorSoikin 我试过了,但没用
  • 想添加任何可操作的细节吗?
  • @FyodorSoikin,我更新了我的问题

标签: listview f# xamarin.forms


【解决方案1】:

如果你要走data binding 路线,那么你的sList 需要是Observable Collection 类型或实现INotifyCollectionChanged[link]。通常,您希望拥有一个从 View Model Base 继承的 View Model 来实现您所需要的。这本身可能有点麻烦,我建议您使用现有的 nuget 包,如 FSharp.ViewModule 并查看一些examples

如果您不是,那么您可以通过路由事件直接绑定到 UI。用于此的 xaml 有点不同。 Routed Events In Xaml

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多