Форум программистов, компьютерный форум CyberForum.ru

Не могу добавить (программно) в ListPicker больше 2-х пунктов - Windows Phone

Восстановить пароль Регистрация
 
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 168
25.08.2014, 17:27     Не могу добавить (программно) в ListPicker больше 2-х пунктов #1
Здравствуйте. Под WP 7.1 пытаюсь реализовать простенький алгоритм, по запуску программы значения читаются из файла и добавляются в кач-ве элементов ListPicker-а. Вот код:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
            IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); // grab the storage
            string str = "";
            if (store.FileExists("n_mash.dat"))
            {
                FileStream stream = store.OpenFile("n_mash.dat", FileMode.Open); // Open a file in Create mode
                BinaryReader br = new BinaryReader(stream);
 
                while (br.BaseStream.Position < br.BaseStream.Length)
                    Piccer1.Items.Add( Convert.ToString(br.ReadDouble())); 
                      
                br.Close();
                users_add_element = true;
          }

Но после выполнения этого кода, если ткнуть в Piccer1 приложение вываливается с исключением, о том что "параметр задан не верно. System.Windows.ApplicationUnhandledExceptionEventArgs". Да и в любом месте если в Picker добавляю один элемент, всё работает, если два и более (и не обязательно в цикле, можно и подряд), то ловлю вот это непонятное исключение. Что я делаю не так? Как исправить? Заранее спасибо за помошь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2014, 17:27     Не могу добавить (программно) в ListPicker больше 2-х пунктов
Посмотрите здесь:

Windows Phone Как программно перезапустить собственную программу?
Windows Phone Как программно узнать какая тема установлена? (WP8)
Windows Phone Как добавить в LongListSelector больше одного элемента?
Добавить ссылку на приложение Windows Phone
Windows Phone Добавить анимацию во время загрузки страницы
Windows Phone Не удалось добавить ссылку на проект в том-же решении
Hub: Как программно вставить элементы в его HubSection's? Windows Phone
В Microsoft больше не дают ключи к Visual Studio 2012 Express for Windows Phone. Есть у кого ключ? Windows Phone
Как добавить пользователя в группу администрирования Hyper-V? Windows Phone
Windows Phone Как добавить календарь в виде полосы прокрутки?
Windows Phone Программно вывести картинку

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vzolotov
2 / 2 / 1
Регистрация: 09.08.2014
Сообщений: 6
25.08.2014, 19:57     Не могу добавить (программно) в ListPicker больше 2-х пунктов #2
По-моему свойство Items только для чтения. Используйте свойство ItemsSource, Пример
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 168
26.08.2014, 11:12  [ТС]     Не могу добавить (программно) в ListPicker больше 2-х пунктов #3
ItemsSource - добавляет сразу всю коллекцию, а Items предполагает добавление по одному. Иначе Items.Add() у меня бы вообще не работало. Но попробовал сделать как в примере через ItemSource, да коллекция отобразилась в элементе, но после того как я добавил в эту коллекцию ещё элемент, программа вылетела с той же ошибкой: "System.Windows.ApplicationUnhandledExceptionEventArgs". Кстати пример тот компилиться, но не запускается. Пишет: Set property 'Microsoft.Phone.Controls.ListPicker.ItemCountThreshold' threw an exception. [Line: 61 Position: 122]

Добавлено через 1 час 15 минут
Ну вроде все заработало через ItemSource. Только вот присваиваемая коллекция должна быть ObservableCollection<>, а у меня была List<>. Теперь изменяя эту коллекцию, изменения отображаются в ListPicker-е.
vzolotov
2 / 2 / 1
Регистрация: 09.08.2014
Сообщений: 6
26.08.2014, 11:22     Не могу добавить (программно) в ListPicker больше 2-х пунктов #4
Цитата Сообщение от VV0lk
Только вот присваиваемая коллекция должна быть ObservableCollection<>, а у меня была List<>. Теперь изменяя эту коллекцию, изменения отображаются в ListPicker-е
Это самые основы. Советую еще почитать про интерфейс INotifyPropertyChanged
VV0lk
11 / 1 / 0
Регистрация: 25.12.2011
Сообщений: 168
26.08.2014, 13:43  [ТС]     Не могу добавить (программно) в ListPicker больше 2-х пунктов #5
Я так понял, что есть два способа управления компонентами (но либо один, либо второй, комбинировать нельзя), один через присваивание коллекции ItemSource, а другой поштучное добавление, удаление через Items. Так вот прописав вручную событие
C#
1
this.Piccer1.SelectionChanged += new SelectionChangedEventHandler(listPicker1_SelectionChanged);
, а не через мастер Visual Studio, ошибка перестала вылетать и мой код заработал:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
List<string> Piccer1_Collec = new List<string>();
........
 public MainPage()
 {
  InitializeComponent();   
  IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForApplication(); // grab the storage
           
            Piccer1_Collec.Add("8.46");
            Piccer1_Collec.Add("10.45");
            string str = "";
            if (store.FileExists("n_mash.dat"))
            {
                FileStream stream = store.OpenFile("n_mash.dat", FileMode.Open); 
                BinaryReader br = new BinaryReader(stream);
   
                    while (br.BaseStream.Position < br.BaseStream.Length)
                        Piccer1_Collec.Add(Convert.ToString(br.ReadDouble()));
 
                br.Close();
                users_add_element = true;
    
            }
 
            for (int i = 0; i < Piccer1_Collec.Count; i++)
                Piccer1.Items.Add(Piccer1_Collec[i]);
 }

Но вот единственное, что вид пиккера в развернутом состоянии стал открываться на отдельной странице. Хотя раньше отъезжал вниз. Почему и как это исправить?

Добавлено через 9 минут
А также удалил строки добавления из .xaml файла.
XML
1
2
 <toolkit:ListPickerItem Content="8.46" />
         <toolkit:ListPickerItem Content="10.45" />
Иначе ошибка неизбежна.
Yandex
Объявления
26.08.2014, 13:43     Не могу добавить (программно) в ListPicker больше 2-х пунктов
Ответ Создать тему
Опции темы

Текущее время: 04:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru