Исключение «Операция не поддерживается только для чтения» при динамическом добавлении элементов управления в коллекцию элементов списка в Windows Phone - PullRequest
0 голосов
/ 05 января 2012

Я пытаюсь добавить элементы управления кнопки в коллекцию элементов списка динамически при заполнении списка.Я получаю сообщение об ошибке «Операция не поддерживается только для чтения».ниже приведен мой код xaml, а затем мой код xaml.cs.

        <ListBox x:Name="TripList" Height="465" HorizontalAlignment="Left" VerticalAlignment="Top" Width="456" Background="White" Foreground="Blue">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <Border BorderBrush="Black" BorderThickness="0,0,0,4">
                                <StackPanel Orientation="Vertical" Width="456">
                                    <StackPanel Orientation="Vertical">
                                        <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
                                            <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" Width="370" FontSize="24" Text="{Binding PUDetails}"/>
                                            <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Right" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="24" Text="{Binding TripStatus}"/>
                                        </StackPanel>
                                        <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
                                            <StackPanel VerticalAlignment="Top" Orientation="Horizontal" Width="300">
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="Conf: "/>
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="{Binding ConfNumber}"/>
                                            </StackPanel>
                                            <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Right" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="Est Do Tm: "/>
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Right" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="{Binding DOTime}"/>
                                            </StackPanel>
                                        </StackPanel>
                                        <StackPanel VerticalAlignment="Top" Orientation="Vertical">
                                            <StackPanel x:Name="stacktest" Background="Azure" Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top">
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="Svc: "/>
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="{Binding TripService}"/>
                                            </StackPanel>
                                            <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="PU: "/>
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="{Binding PURoute}"/>
                                            </StackPanel>
                                            <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="DO: "/>
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="{Binding DORoute}"/>
                                            </StackPanel>
                                            <StackPanel VerticalAlignment="Top" Orientation="Horizontal">
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="Pax: "/>
                                                <TextBlock FontWeight="Bold" Foreground="Black" HorizontalAlignment="Left" TextWrapping="Wrap"  VerticalAlignment="Top" FontSize="18" Text="{Binding PaxDetails}"/>
                                            </StackPanel>
                                        </StackPanel>
                                    </StackPanel>

                                        </StackPanel>
                                 </StackPanel>
                            </Border>

                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>


       Grid grdtest = new Grid();
        foreach (TripsList lst in TripList.Items)
        {

            System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
                {

                    grdtest.RowDefinitions.Add(new RowDefinition() { });
                    grdtest.ColumnDefinitions.Add(new ColumnDefinition() { });
                    Button button = new Button();
                    button.HorizontalAlignment = HorizontalAlignment.Right;
                    button.VerticalAlignment = VerticalAlignment.Top;
                    button.Margin = new Thickness(3);
                    button.Width = 80;
                    button.Height = 25;
                    button.Content = "btn1";
                    Grid.SetRow(button, 0);
                    Grid.SetColumn(button, 0);
                    grdtest.Children.Add(button);

                    LayoutRoot.Children.Add(grdtest);
                    TripList.Items.Add(grdtest);

                });

        }

Может кто-нибудь сообщить мне, как решить проблему.Заранее спасибо.

1 Ответ

0 голосов
/ 05 января 2012
foreach (TripsList lst in TripList.Items) 
        { 

            System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() => 
                { 

                    grdtest.RowDefinitions.Add(new RowDefinition() { }); 
                    grdtest.ColumnDefinitions.Add(new ColumnDefinition() { }); 
                    Button button = new Button(); 
                    button.HorizontalAlignment = HorizontalAlignment.Right; 
                    button.VerticalAlignment = VerticalAlignment.Top; 
                    button.Margin = new Thickness(3); 
                    button.Width = 80; 
                    button.Height = 25; 
                    button.Content = "btn1"; 
                    Grid.SetRow(button, 0); 
                    Grid.SetColumn(button, 0); 
                    grdtest.Children.Add(button); 

                    LayoutRoot.Children.Add(grdtest); 
                    TripList.Items.Add(grdtest); 

                }); 

        }

Преобразуйте этот foreach в для цикла.Как вы не можете изменить коллекцию в foreach ...

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