Sto riscontrando alcuni problemi nell'uso di RelayCommand di GalaSoft.RelayCommand smette di funzionare dopo un po '
I have a NextCommand proprietà che funziona, ma solo più volte.
Successivamente, smette di funzionare completamente.
Si può provare questo con il progetto di esempio:
http://s000.tinyupload.com/?file_id=65828891881629261404
Il comportamento è la seguente:
- nextCommand:
- pops tutti gli elementi fino alla attiva indice
- se vi sono meno di 50 elementi di sinistra, spinge 1 nuovo elemento
- marchi new come attivo
- BackCommand:
- sposta l'indice attivo indietro di 1 posizione
Passi per la replica:
- il tasto '+' (OemPlus) è stato legato a nextCommand
- il tasto '-' (OemMinus) è stato legato a BackCommand
- Tenere premuto il tasto '+' fino a quando l'elenco smette di crescere (50 articoli limitano)
- Tenere il tasto '-' fino alla prima voce dell'elenco è la attiva
- Ripetere
il numero di ripetizioni necessarie (per replicare il bug) è incoerente.
A volte capisco dopo 4 ripetizioni; altre volte fino fino a 9.
// Items Collection
public class ItemCollection : ViewModelBase
{
// List of Items
private readonly ObservableCollection<Item> _items = new ObservableCollection<Item>();
public ObservableCollection<Item> Items
{
get { return _items; }
}
// Constructor
public ItemCollection()
{
BackCommand = new RelayCommand(
() =>
{
// Go to previous page
var index = Items.IndexOf(ActiveItem);
if (index > 0)
{
ActiveItem = Items[index - 1];
}
},
() => ActiveItem != null && Items.IndexOf(ActiveItem) > 0);
}
// Back command
public RelayCommand BackCommand { get; set; }
// Next command
public RelayCommand NextCommand { get; set; }
// The currently-active item
private Item _activeItem;
public Item ActiveItem
{
get { return _activeItem; }
set
{
Set(() => ActiveItem, ref _activeItem, value);
}
}
}
// Item
public class Item : ViewModelBase
{
public string Title { get; set; }
}
Quando ho fatto un passo in codice del RelayCommand, isAlive bandiera della azione di esecuzione era falsa. Ma non riesco a capire come possa accadere.
+1 per il tuo bel Gif animato che spiega il tuo problema. – Sheridan
Non vedo dov'è 'NextCommand' istanziato nel codice. Il problema potrebbe essere lì (qualcosa che lo disabilita). – Sinatr
In altre parole, dobbiamo vedere cosa 'NextCommand' è – Kcvin