15
Xamarin Forms in Action Medchest Assistant

Xamarin Forms in Action

Embed Size (px)

Citation preview

Page 1: Xamarin Forms in Action

Xamarin Forms in ActionMedchest Assistant

Page 2: Xamarin Forms in Action

Project architecture. PCL

Page 3: Xamarin Forms in Action

Xamarin Forms. Init

Android project:

global::Xamarin.Forms.Forms.Init (this, bundle);

iOS project:

global::Xamarin.Forms.Forms.Init ();

Page 4: Xamarin Forms in Action

Xamarin Forms XAML

Page 5: Xamarin Forms in Action

Xamarin Forms XAML

<ContentPage.Content>

<StackLayout Orientation="Vertical" VerticalOptions="FillAndExpand">

<Label x:Name="label" Text="List of medicines” HorizontalOptions="Center" />

<StackLayout Orientation="Horizontal">

<Entry x:Name="nameEntry" HorizontalOptions="FillAndExpand" />

<DatePicker x:Name="datePicker" HorizontalOptions="End"/>

<Button x:Name="addButton" Text="Add" Clicked="add" HorizontalOptions="End" />

<Button x:Name="scanButton" Text="Scan" Clicked="scan" HorizontalOptions="End" />

</StackLayout>

<ListView x:Name="list" VerticalOptions="FillAndExpand">

<ListView.ItemTemplate>

<DataTemplate>

<TextCell Text="{Binding Name}" Detail="{Binding ExpireDate,

StringFormat='Expires: {0:MM-dd-yy}'}">

<TextCell.ContextActions>

<MenuItem Clicked="onDelete"

CommandParameter="{Binding .}" Text="Delete" IsDestructive="True" />

</TextCell.ContextActions>

</TextCell>

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

</StackLayout>

</ContentPage.Content>

Page 6: Xamarin Forms in Action

Xamarin Forms Bindings

<ListView x:Name="list" VerticalOptions="FillAndExpand">

<ListView.ItemTemplate>

<DataTemplate>

<TextCell Text="{Binding Name}" Detail="{Binding ExpireDate, StringFormat='Expires:

{0:MM-dd-yy}'}"> <TextCell.ContextActions>

<MenuItem Clicked="onDelete" CommandParameter="{Binding .}" Text="Delete"

IsDestructive="True" />

</TextCell.ContextActions>

</TextCell>

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

</StackLayout>

</ContentPage.Content>

Page 7: Xamarin Forms in Action

Platfrom specific designers

Page 8: Xamarin Forms in Action

No XAML Designer

Page 9: Xamarin Forms in Action

Platform Specific. Common Interface

namespace MedChestAssistant{

public interface INotificationHelper{

void notify(String message);}

}

Page 10: Xamarin Forms in Action

Platform Specific. Interface Implementation

[assembly: Xamarin.Forms.Dependency (typeof (NotificationHelperImpl))]namespace MedChestAssistant.iOS{

public class NotificationHelperImpl: INotificationHelper{

#region INotificationHelper implementation

public void notify (string message){

var notification = new UILocalNotification();

// set notification params …

UIApplication.SharedApplication.ScheduleLocalNotification(notification);}#endregion

public NotificationHelperImpl (){}

}}

Page 11: Xamarin Forms in Action

NuGet packages

Page 12: Xamarin Forms in Action

Packages in project tree

Page 13: Xamarin Forms in Action

Platform-specific initialisation

Android:

ZXing.Mobile.MobileBarcodeScanner.Initialize (Application);

iOS:

ZXing.Net.Mobile.Forms.iOS.Platform.Init();

Page 14: Xamarin Forms in Action

iOS-specific notifications setup

if (UIDevice.CurrentDevice.CheckSystemVersion (8, 0)) {var notificationSettings = UIUserNotificationSettings.GetSettingsForTypes (

UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, null

);

app.RegisterUserNotificationSettings (notificationSettings);}