Ich habe einige Probleme mit dem RelayCommand von GalaSoft.RelayCommand funktioniert nach einer Weile
Ich habe eine NextCommand Eigenschaft, die funktioniert, aber nur einige Male.
Danach hört es vollständig auf zu arbeiten.
Sie können dies mit dem Beispielprojekt ausprobieren:
http://s000.tinyupload.com/?file_id=65828891881629261404
Das Verhalten ist wie folgt:
- nextcommand:
- Pops alle Elemente bis zum aktiven Index
- , wenn es weniger als 50 Stück links, drückt 1 neues Element
- Marken neues Objekt als aktive
- BackCommand:
- den aktiven Index zurück um 1 Position bewegt
Schritte zu replizieren:
- die ‚+‘ (OEMplus) Schlüssel wurde an nextcommand gebunden
- der ‚-‘ (OemMinus) Schlüssel wurde BackCommand gebunden
- Halten Sie die ‚+‘ drücken, bis die Liste aufhört zu wachsen (50 Titel begrenzen)
- die Hold ‚-‘ drücken, bis der erste Eintrag in der Liste dem aktiv
- Repeat ist
die Anzahl der Wiederholungen benötigt (um den Fehler zu replizieren) ist inkonsistent.
Manchmal bekomme ich es nach 4 Wiederholungen; up anderen Zeiten bis 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; }
}
Als ich in den RelayCommand Code trat, die -Aktion ausführen IsAlive Flag falsch war. Aber ich kann mir nicht vorstellen, wie das passieren könnte.
+1 für Ihr nettes animiertes Gif, das Ihr Problem erklärt. – Sheridan
Ich sehe nicht, wo 'NextCommand' in Ihrem Code instanziiert ist. Das Problem könnte da sein (etwas, was es deaktiviert). – Sinatr
Mit anderen Worten, wir müssen sehen, was 'NextCommand' ist – Kcvin