问题描述
如何在 F# 中使用 Xamarin.Forms.Maps 创建自定义事件?我在 C# 中做了一个版本,但尝试转换为 F# 失败。请随时评论如何转换为 F#。谢谢。
C# 版本
public class MyMap : Map
{
public static readonly BindableProperty ZoomLevelProperty = BindableProperty.Create(nameof(ZoomLevel),typeof(distance),typeof(MainPageMap),new distance());
public MyMap()
{
this.PropertyChanged += (object sender,PropertyChangedEventArgs e) =>
{
MyMap map = sender as MyMap;
if (map.VisibleRegion != null)
{
this.ZoomLevel = map.VisibleRegion.Radius;
// Console.WriteLine("Xamarin Forms Map Radius: {0} Kilometers | {1} Meters | {2} Miles.",ZoomLevel.Kilometers,ZoomLevel.Meters,ZoomLevel.Miles);
}
};
}
public distance ZoomLevel
{
get { return (distance)GetValue(ZoomLevelProperty); }
set { SetValue(ZoomLevelProperty,value); }
}
}
根据“Microsoft's document”,我尝试转换成F#。
namespace ProjectA.Controls
open System
open System.ComponentModel
open Xamarin.Forms
open Xamarin.Forms.Maps
type MyMap() =
inherit Map()
static let ZoomLevelProperty = BindableProperty.Create("ZoomLevel",typeof<distance>,typeof<MyMap>,new distance())
member this.ZoomLevel
with get () = this.GetValue ZoomLevelProperty :?> distance
and set (value: distance) = this.SetValue(ZoomLevelProperty,value)
member this.PropertyChanged(sender: Object,e: PropertyChangedEventArgs) =
let map:MyMap = sender :?> MyMap
if (map.VisibleRegion <> null) then this.ZoomLevel <- map.VisibleRegion.Radius
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)