1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-30 15:06:06 +00:00

Réparation provisoir UWP

This commit is contained in:
Yan Maniez 2018-05-30 23:50:39 +02:00
parent 48a5a94371
commit c1c00d0659
3 changed files with 30 additions and 13 deletions

View file

@ -19,7 +19,7 @@ namespace AideDeJeu.ViewModels
public ItemsViewModel(ItemSourceType itemSourceType) public ItemsViewModel(ItemSourceType itemSourceType)
{ {
this.ItemSourceType = itemSourceType; this.ItemSourceType = itemSourceType;
LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync()); LoadItemsCommand = new Command(async () => await ExecuteLoadItemsCommandAsync().ConfigureAwait(false));
} }
public ICommand LoadItemsCommand { get; protected set; } public ICommand LoadItemsCommand { get; protected set; }
//public abstract void ExecuteLoadItemsCommand(); //public abstract void ExecuteLoadItemsCommand();
@ -75,19 +75,24 @@ namespace AideDeJeu.ViewModels
Main.IsLoading = true; Main.IsLoading = true;
try try
{ {
// Yan : c'est pas plutôt cette partie qui devrait être dans une autre Task ?
var filterViewModel = Main.GetFilterViewModel(ItemSourceType); var filterViewModel = Main.GetFilterViewModel(ItemSourceType);
var items = await filterViewModel.FilterItems(AllItems, token); var items = await filterViewModel.FilterItems(AllItems, token);
await Task.Run(() =>
{ await Task.Run(async () => {
Main.Items.Clear(); // Yan : plus besoin de boucle si on change toute la liste d'un coup ;)
foreach (var item in items) // Yan : indispensable de repasser sur l'ui thread pour la version uwp
{ Device.BeginInvokeOnMainThread(() => Main.Items = items);
token.ThrowIfCancellationRequested(); //Main.Items.Clear();
Main.Items.Add(item); //foreach (var item in items)
} //{
}); // token.ThrowIfCancellationRequested();
// Main.Items.Add(item);
//}
}, cancellationToken: token); // Yan : c'est ici qu'il faudrait coller le token non ?
//On arrete le loading ici car on annule toujours avant de lancer une nouvelle opération //On arrete le loading ici car on annule toujours avant de lancer une nouvelle opération
// Yan : ?? du coup le IsLoading repasse pas à false en cas de cancel ou d'autre exception ?
Main.IsLoading = false; Main.IsLoading = false;
} }
catch (OperationCanceledException ex) catch (OperationCanceledException ex)

View file

@ -89,7 +89,19 @@ namespace AideDeJeu.ViewModels
return AllFiltersViewModel[itemSourceType].Value; return AllFiltersViewModel[itemSourceType].Value;
} }
public ObservableCollection<Item> Items { get; private set; } = new ObservableCollection<Item>(); // Yan : pas besoin d'ObservableCollection, on ne modifie jamais la liste item par item
public IEnumerable<Item> _Items = new List<Item>();
public IEnumerable<Item> Items
{
get
{
return _Items;
}
set
{
SetProperty(ref _Items, value);
}
}
private Item _SelectedItem; private Item _SelectedItem;
public Item SelectedItem public Item SelectedItem

View file

@ -2,7 +2,7 @@
using AideDeJeuLib.Monsters; using AideDeJeuLib.Monsters;
using AideDeJeuLib.Spells; using AideDeJeuLib.Spells;
using System; using System;
using System.Linq;
using Xamarin.Forms; using Xamarin.Forms;
using Xamarin.Forms.Xaml; using Xamarin.Forms.Xaml;
@ -35,7 +35,7 @@ namespace AideDeJeu.Views
{ {
base.OnAppearing(); base.OnAppearing();
if (Main.Items.Count == 0) if (Main.Items.Count() == 0)
Main.LoadItemsCommand.Execute(null); Main.LoadItemsCommand.Execute(null);
} }