25/09/2019 |
Admin |
Windows phone
Dans une application universelle, pour la famille Windows Phone, l'appui sur le bouton Back entraine un retour sur la page précédente. Si cette dernière est la première page de l'application, l'application va se fermer.
Ce fonctionnement est logique mais un utilisateur peut utiliser cette fonction intentionnellement. C'est pour cela que l'ajout d'un popup de confirmation peut-être utile dans certains cas.
Dans la méthode OnLaunched de la classe App (App.xaml.cs)
Dans un premier temps, il faut tester si le device est un téléphone et si le bouton back est présent :
if (ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
HardwareButtons.BackPressed += OnBackPressed;
}
Ensuite, déclarer une méthode privée au sein de cette même classe :
private async void OnBackPressed(object sender, BackPressedEventArgs e)
{
var frame = (Frame)Window.Current.Content;
e.Handled = true;
if (frame.CanGoBack)
{
frame.GoBack();
}
else
{
var msg = new MessageDialog("Etes-vous sûr de vouloir quitter l'application ?");
var okBtn = new UICommand("Oui");
var cancelBtn = new UICommand("Non");
msg.Commands.Add(okBtn);
msg.Commands.Add(cancelBtn);
IUICommand result = await msg.ShowAsync();
if (result != null && result.Label == "Oui")
{
Application.Current.Exit();
}
}
}

[Capture]
Lire >>
01/01/2019 |
Admin |
Xamarin
Il existe des API du Framework .NET qui n'existent pas dans les API .NET des Windows Store Apps.
Par exemple Sytem.IO, dans l'API .Net pour les Windows Apps ne contient pas System.IO.IsolatedStorage mais Windows.Storage.
Cette API fournit un comportement similaire mais son utiliastion est très différente.
Après le développement de plusieurs applications Windows Store, j'ai remarqué que le développement d'une classe FileHelper serait utile.
En effet, des méthodes comme FileExists() ou FolderExists() ne sont pas proposés par Windows.Storage alors que leur utilisation est quasiment inévitable.
J'ai donc décidé de mettre ce code sur GitHub pour qu'il puisse être réutilisé et amélioré. Le code source ainsi que le sample d'une Universal Apps sont disponibles.
Voici la liste des fonctions majeures proposées :
FileHelper :
FileExistsAsync()
FolderExistsAsync()
GetFileStreamAsync()
GetContentFromFileAsync()
GetFileBytesAsync()
WriteToFileAsync()
ConvertStorageFileToBase64StringAsync()
EnumerateFilesAsync()
GetSubFoldersAsync()
DeserialiseXml<T>()
ZipHelper :
ZipFileAsync()
UnZipFileAsync()
Vous pouvez retrouver ce projet sur GitHub et le package nuget correspondant : Ph.WinRtFileHelper
Lire >>
01/01/2019 |
Admin |
Xamarin
Pour supprimer l'historique d'une recherche dans un composant de type SearchBox sur Windows Phone ou du composant SearchBar sur Xamarin avec Windows, il suffit d'éxécuter ce code:
// Clear SearchBar history
var searchManager = new Windows.ApplicationModel.Search.Core.SearchSuggestionManager();
searchManager.ClearHistory();
Avec Xamarin, il suffit d'éxécuter ce code dans le App.xaml.cs de l'application Windows après cette ligne de code:
// Place the frame in the current Window
Window.Current.Content = rootFrame;
Lire >>
01/01/2019 |
Admin |
Xamarin
Voici un exemple d'implémentation du plugin UserDialogs pour la plateforme Windows.
L'auteur du plugin a indiqué qu'il ne supportera pas Windows 8. Il préfère se concentrer sur le développement du plugin pour Windows 10.
ConfirmAsync
public async Task<bool> ConfirmAsync(string message, string title = null, string okText = "OK", string cancelText = "Cancel")
{
var messgeDialog = new MessageDialog(message, title);
messgeDialog.Commands.Add(new UICommand(okText));
messgeDialog.Commands.Add(new UICommand(cancelText));
messgeDialog.DefaultCommandIndex = 0;
messgeDialog.CancelCommandIndex = 1;
var result = await messgeDialog.ShowAsync();
if (result.Label.Equals(okText))
{
return true;
}
else
{
return false;
}
}
AlertAsync
public async Task AlertAsync(string message, string title = null, string okText = "OK")
{
var md = new MessageDialog(message, title);
await md.ShowAsync();
}
PromptAsync
public async Task PromptAsync(string message, string title = null, string okText = "OK", string cancelText = "Cancel", string placeholder = "", bool secure = false)
{
var dialog = new PromptDialog(message, placeholder);
var result = await dialog.ShowAsync();
if (result != null)
{
return result;
}
else
{
...
Lire >>