Коллекция была изменена; Операция перечисления может не выполняться. Xamarin Forms - PullRequest
0 голосов
/ 01 мая 2018

У меня есть представление списка в проекте Xamarin Froms как:

 <ListView x:Name="ExerciseList" HasUnevenRows="False" SeparatorVisibility="None" RowHeight="200">

                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>
                            <StackLayout Orientation="Vertical">
                                <StackLayout Orientation="Horizontal" HorizontalOptions="CenterAndExpand">
                                    <Entry Text="{Binding ExerciseName}" HorizontalTextAlignment="Center" Focused="ExerciseName_Focused" HorizontalOptions="CenterAndExpand">
                                        <Entry.GestureRecognizers>
                                            <TapGestureRecognizer Tapped="ExerciseNameGestureRecognizer_Tapped"/>
                                        </Entry.GestureRecognizers>
                                    </Entry>
                                    <Image IsVisible="{Binding GreenVisible}" Source="smallgreenadd.png"/>
                                    <Image IsVisible="{Binding RedVisible}" Source="smallredremove.png"/>
                                </StackLayout>
                                <Grid>
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="1*"/>
                                        <ColumnDefinition Width="1*"/>
                                    </Grid.ColumnDefinitions>
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="1*"/>
                                        <RowDefinition Height="1*"/>
                                        <RowDefinition Height="1*"/>
                                    </Grid.RowDefinitions>
                                    <Label Text="Sets : " Grid.Column="0" Grid.Row="0" HorizontalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
                                    <Label Text="Weights : " Grid.Column="0" Grid.Row="1" HorizontalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
                                    <Label Text="Reps: " Grid.Column="0" Grid.Row="2" HorizontalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
                                    <Entry Text="{Binding Sets}" Grid.Column="1" Grid.Row="0" HorizontalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
                                    <Entry Text="{Binding Weights}" Grid.Column="1" Grid.Row="1"  HorizontalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
                                    <Entry Text="{Binding Reps}" Grid.Column="1" Grid.Row="2"  HorizontalTextAlignment="Center" HorizontalOptions="CenterAndExpand" />
                                </Grid>
                            </StackLayout>
                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>               
            </ListView>

Это прикреплено к модальному виду, называемому ExerciseViewModal. Это:

public class ExerciseViewModal : BaseViewModal
{
    private List<AddExerciseModal> _addExerciseModals;
    public List<AddExerciseModal> AddExerciseModals
    {
        get { return _addExerciseModals; }
        set
        {
            _addExerciseModals = value;
            OnPropertyChanged("AddExerciseModals");
        }
    }
    public ExerciseViewModal()
    {
        _addExerciseModals = new List<AddExerciseModal>();

        if (AddExerciseModals.Count == 0)
        {
        for (int i = 0; i < 7; i++)
        {
                AddExerciseModal addExerciseModal = new AddExerciseModal
                {
                    ExerciseID = i,
                    ExerciseName = "Excercise " + i,
                    GreenVisible = false,
                    RedVisible = true,
                    Sets = "2",
                    Reps = "10",
                    Weights = "10"
                };
                AddExerciseModals.Add(addExerciseModal);
        }
            AddExerciseModals[AddExerciseModals.Count - 1].GreenVisible = true;
            AddExerciseModals[AddExerciseModals.Count - 1].RedVisible = false;
        }

    }
}

Класс AddExerciseModal:

public class AddExerciseModal
{
  public int ExerciseID { get; set; }
  public string ExerciseName { get; set; } 
  public string Weights { get; set; }
  public string Reps { get; set; }
  public string Sets { get; set; }
  public bool GreenVisible { get; set; }
  public bool RedVisible { get; set; }
}

Всякий раз, когда я пытаюсь изменить свойство sets/reps/Weights внутри ListView, я всегда получаю сообщение об ошибке:

"Коллекция была изменена; операция перечисления может не выполняться."

Как я могу решить это?

1 Ответ

0 голосов
/ 01 мая 2018

Можете ли вы изменить свой список на ObservableCollection и попробовать его. Это решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...