Windows Phone 7.1 ListPicker, простой способ перейти в полный режим?
Я пытаюсь использовать ListPicker
контроллер с ListPickerMode="Full"
, чтобы получить полноэкранное окно выбора. Однако это просто генерирует ошибку, когда я пытаюсь
"Произошло первое исключение типа" System.Windows.Markup.XamlParseException "в System.Windows.dll.
Дополнительная информация: Установить свойство Microsoft.Phone.Controls.ListPicker.ListPickerMode
бросил исключение. [Линия: 49 позиция: 57]"
Вот мой код:
<toolkit:ListPicker x:Name="OutputSelector" ListPickerMode="Full"
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />
Я заполняю свой ListPicker в C#, используя список для установки в качестве ItemSource, если это поможет. Другое дело, что, когда я пытаюсь написать "ListPickerMode" в xml, он дает его в качестве опции, но когда я написал все это, он предлагает "Полный", "расширенный" и "Нормальный".
Если я добавляю 5 элементов в ListPicker, он автоматически использует FullMode, и я пытался изменить ItemCountThreshold="0", но это просто генерирует больше ошибок.
Я использую Windowns Phone 7.1 OS 2011 aug release.
Это, наверное, только я, что глупо, первый день с программированием Windows Phone:)
ОБНОВИТЬ!
Что ж, похоже, ItemCountThreshold & ListPickerMode был удален для версии 7.1 или чего-то еще, по крайней мере, в части XAML, а не в части C#, где они только для чтения.
Решение для моей проблемы!
<toolkit:ListPicker x:Name="OutputSelector" ExpansionMode="FullScreenOnly"
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />
ExpansionMode заставит Listpicker появиться в полноэкранном или расширенном режиме.
2 ответа
Как указано в трекере проблем набора инструментов silverlight [1], ItemCountThreshold не должен быть установлен (и не может быть установлен с помощью простого xaml).
Однако есть два обходных пути для этой проблемы. Если вы не против использовать codebehind, установите свойство через SetValue:
//e.g., in the constructor, just after InitializeComponent();
ListPicker.SetValue(Microsoft.Phone.Controls.ListPicker.ItemCountThresholdProperty, 0);
Чтобы установить значение в xaml, вы можете использовать привязку:
<toolkit:ListPicker ItemCountThreshold="{Binding Hugo,FallbackValue=0}">(...)
В этом примере я использую фиктивное выражение привязки и устанавливаю значение с помощью FallbackValue. Конечно, фактическое рабочее связывание также должно работать. Подход xaml был протестирован только на WP8 SDK, однако он должен работать и на 7.1.
Изменить: Только что выяснил, что подход XAML ломает дизайнер.
Решение, предложенное автором (здесь для большей наглядности):
Что ж, похоже, ItemCountThreshold & ListPickerMode был удален для версии 7.1 или чего-то еще, по крайней мере, в части XAML, а не в части C#, где они только для чтения.
Решение для моей проблемы!
<toolkit:ListPicker x:Name="OutputSelector" ExpansionMode="FullScreenOnly" Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />
ExpansionMode заставит Listpicker появиться в полноэкранном или расширенном режиме.