Элемент управления Pivot, динамически добавляющий элементы Pivot, исключает ArgumentException, когда выбирается индекс Pivot. - PullRequest
0 голосов
/ 05 сентября 2011

У меня проблема с добавлением элемента сводки в элемент управления сводкой. Я хочу добавить элемент сводки в сводку (Mycontrol), когда я добавляю следующую кнопку .code для следующей кнопки

           static   int selectitem;
      private void nextbuttonOnclick(object sender, RoutedEventArgs e)
    {

            if (selectitem != list.Count() - 1)
                select(selectitem + 1);
            else
            {
                select(0);
            }

    }

теперь она вызываетвыберите метод, чтобы добавить элемент сводки в сводку

      void select(int i)
    {
        MyControl.Items.Clear();

        pivotItem = new PivotItem();
        Grid sta = new Grid();


        WebBrowser wb = new WebBrowser();

        sta.Background = new SolidColorBrush(Colors.White);


        var address = "<h3>" + list.ElementAt(i).header + "</h3>" + "<br>" + "<img width=\"949\" height=\"449\"  src=" + list.ElementAt(i).Imagee + " >" + "<br>" + list.ElementAt(i).Detail.ToString();
        var ByteData = Encoding.UTF8.GetBytes(address);
        System.Text.Encoding enc = System.Text.Encoding.UTF8;
        string myString = enc.GetString(ByteData, 0, ByteData.Length);

        try
        {
            wb.Loaded += (sendr, ev) =>
            {
                wb.NavigateToString(myString);
            };
        }
        catch (Exception ex)
        {
        }



        wb.Margin = new Thickness(0, 0, 0, 0);

        sta.Children.Add(wb);


       pivotItem.Content = sta;
        MyControl.Items.Add(pivotItem);





        try
        {
            if (i == -1)
                MyControl.SelectedIndex = 0;
            else
            {
                selectitem = i;
                MyControl.SelectedIndex = i;


            }
        }
        catch (IndexOutOfRangeException v)
        {
        }

    }

, но после добавления он показывает исключение, т. е. исключение ArgumentException было обработано ... спасибо заранее

1 Ответ

0 голосов
/ 05 сентября 2011

ArgumentException происходит из-за этой строки:

MyControl.Items.Clear();

Эта строка удаляет все элементы в элементе управления pivot, но ваша внутренняя переменная selectitem не учитывает это. В вашем коде всегда будет только один элемент сводки (который побеждает цель управления сводкой). Когда вы добавляете элемент № 2, переменная selectitem устанавливается на 1, и строка MyControl.SelectedIndex = 1; выдает исключение, поскольку существует только 1 элемент сводки (0 основанных массивов и все такое).

Попробуйте удалить строку, которая очищает основные элементы выше, и посмотрите, работает ли она для вас. В противном случае вам придется изменить строку MyControl.SelectedIndex = i; на MyControl.SelectedIndex = 0;.

Только к вашему сведению - когда я запускал ваш образец, мне нужно было инициализировать selecitem -1, а не 0, или я получил то же сообщение об ошибке. Я также добавил код, чтобы установить свойство PivotItem.Header, чтобы было проще переключаться между элементами сводки.

Просто из любопытства, почему вы не делаете это через DataBinding вместо всего этого кода для загрузки элементов вручную?

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