【发布时间】:2018-10-24 04:42:09
【问题描述】:
我无法观察页面导航。
命令:
member x.AddBankcard = DelegateCommand( (fun _ -> async { do! navigate()
} |> Async.RunSynchronously
|> ignore ) ,
fun _ -> true) :> ICommand
发布导航请求:
let navigate() =
account
|> PageRequest.AddBankcard
|> broadcastToAsync pageRequesthandlers
通知订阅者请求:
let broadcastToAsync<'a> (handlers:(list<'a -> Async<unit>>)) (msg:'a) : Async<unit> =
async { handlers |> List.map (fun handle -> async { do! handle msg }) |> ignore }
手柄导航:
let handle = function
| PageRequest.AddBankcard _ ->
page |> function
| :? UI.AddBankcard as pageRequest ->
...
async { do! navigationPage.PushAsync(pageRequest) |> Async.AwaitTask }
| _ -> async { () }
| _ -> async { () }
注意:
不发生页面导航。
我没有收到任何异常。
我在输出窗口中没有看到任何线索
-
我的直觉是我没有正确使用异步。
异步{做! navigationPage.PushAsync(pageRequest) |> Async.AwaitTask }
更新:
我还尝试了以下方法:
let navigationPage = (app:?>Application).MainPage:?>NavigationPage
let navigate () = async {
do! navigationPage.PushAsync(pageRequest) |> awaitTask
}
navigate() |> Async.RunSynchronously |> ignore
【问题讨论】:
标签: xamarin.forms f#