Benutzer mit den meisten Antworten
Einträge in ObservableCollection erscheinen mehrfach, bzw. werden mehrfach hinzugefügt

Frage
-
Hallo,
Ich habe hier ein sehr merkwürdiges Verhalten beim Einfügen von Einträgen in eine ObervableCollection. Jedesmal wenn ich einen Eintrag vornehme erscheint dieser Doppelt und mehrfach. Also 1. Eintrag -> 1 Eintrag, 2. Eintrag -> 2x 2. Eintrag, 3. Eintrag -> 3x 3. EIntrag usw. Letztendlich erscheint der Eintrag so oft wie ich Einträge vorher gemacht habe +1. Komme der Ursache selbst mit Haltepunkten nicht auf die Spur.
Model:
using System.ComponentModel; using System.Runtime.CompilerServices; namespace MyDEFCON_UWP.Models { public class CheckListItem : INotifyPropertyChanged { #region Fields string _item = default(string); bool _checked = default(bool); #endregion #region Properties public string Item { get { return _item; } set { Set(ref _item, value); } } public bool Checked { get { return _checked; } set { Set(ref _checked, value); } } #endregion #region NotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; public void RaisePropertyChanged([CallerMemberName]string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } public bool Set<T>(ref T storage, T value, [CallerMemberName]string propertyName = null) { if (Equals(storage, value)) return false; storage = value; RaisePropertyChanged(propertyName); return true; } #endregion } }
Ausschnitte aus dem ViewModel:
ObservableCollection<CheckListItem> _checkList; public ObservableCollection<CheckListItem> CheckList { get { return _checkList; } set { Set(ref _defcon1CheckList, value); } } private DelegateCommand<string> _addItemCommand; public DelegateCommand<string> AddItemCommand { get { if (_addItemCommand != null) return _addItemCommand; _addItemCommand = new DelegateCommand<string> ( (s) => { CheckList.Add(new CheckListItem() { Item = s, Checked = false }); } ); return _addItemCommand; } }
XAML Ausschnitt:
<AppBarButton.Flyout> <Flyout FlyoutPresenterStyle="{StaticResource AddItemFlyoutPresenterStyle}"> <Interactivity:Interaction.Behaviors> <dependencies:FlyoutBehavior> <dependencies:FlyoutBehavior.OpenActions> <Core:InvokeCommandAction Command="{Binding AddItemFlyoutOpenCommand, Mode=OneWay}"/> </dependencies:FlyoutBehavior.OpenActions> <dependencies:FlyoutBehavior.CloseActions> <Core:InvokeCommandAction Command="{Binding AddItemFlyoutCloseCommand, Mode=OneWay}"/> </dependencies:FlyoutBehavior.CloseActions> </dependencies:FlyoutBehavior> </Interactivity:Interaction.Behaviors> <Grid Width="{Binding ScreenWidth}" Padding="0,0,24,0"> <Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <TextBox x:Name="textBox" Grid.Column="0" FontSize="24" Margin="0" VerticalAlignment="Center"/> <AppBarButton Grid.Column="1" Label="Accept" Icon="Accept" HorizontalAlignment="Center" VerticalAlignment="Center"> <Interactivity:Interaction.Behaviors> <Core:EventTriggerBehavior EventName="Click"> <Core:InvokeCommandAction Command="{Binding AddItemCommand, Mode=OneWay}" CommandParameter="{Binding Text, ElementName=textBox}"/> <Behaviors:CloseFlyoutAction/> </Core:EventTriggerBehavior> </Interactivity:Interaction.Behaviors> </AppBarButton> </Grid> </Flyout> </AppBarButton.Flyout>
Weis jemand was da schieflaufen könnte?- Bearbeitet Marcus Runge Montag, 15. Februar 2016 22:46
Antworten
-
Fehler gefunden,
Kommando über InvokeCommandAction gestrichen und stattdessen das Kommando direkt über den AppBarButton gebunden.
- Als Antwort markiert Marcus Runge Montag, 15. Februar 2016 22:56