Xamarin.Forms 4.1.0 已發布,這是 4.0 重大版本發布后的首次更新,可通過 NuGet 獲取新版本。團隊表示 3.x 系列主要是對各種缺陷的修補,並從中認識到應儘可能滿足用戶的需求並幫助他們提升生產力,而積累的這些經驗將會逐漸體現在 4.x 系列中。
4.0.0 最重要的更新莫過於正式將 Shell 集成到 Xamarin.Forms。從表面上看,Shell 提供了一種非常簡單的語法來建立應用程序的彈出菜單和標籤菜單。除了現有的導航服務之外,它還引入了強大的基於路由的 URI 導航服務。
此外,Shell 更加強大的地方在於底層,所有渲染器都實現了「快速渲染器」模式,數據模板和渲染器可以輕鬆擴展所有內容。這個新架構為未來的 Xamarin.Forms 開發奠定了基礎,可以實現更具表現力的動畫、過渡與交互。
4.1.0 帶來了許多質量方面的改進、一個新的 CheckBox 控制項(首次亮相於預覽版),以及大量來自社區反饋的功能增強(例如對 Map 的改進)。
從 4.1.0 版本起,捕捉 tap 或 click 動作的位置將變得更簡單,只需訂閱到OnMapClicked
事件即可。效果如下:
當在地圖畫布中的任意位置進行 tap 操作時,事件會返回 tap 操作位置的經度和緯度。
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
xmlns:local="clr-namespace:Xappy;assembly=Xappy"
Shell.NavBarIsVisible="False"
Shell.TabBarIsVisible="False"
x:Class="Xappy.Scenarios.MapPage">
<Grid>
<maps:Map
x:Name="MyMap"
IsShowingUser="true"
MapType="Street"
MapClicked="Handle_MapClicked" />
...
void Handle_MapClicked(object sender, MapClickedEventArgs e)
{
MyMap.Pins.Add(
new Pin
{
Position = new Position(e.Position.Latitude, e.Position.Longitude),
Label = "Joe's Place"
}
);
DisplayAlert("Joe Says:", $"Last MapClick: {e.Position.Latitude}, {e.Position.Longitude}", "Thanks");
}
示例代碼來自 Xappy (on GitHub)。
[admin
]