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 ломает дизайнер.

[1] http://silverlight.codeplex.com/workitem/9742

Решение, предложенное автором (здесь для большей наглядности):

Что ж, похоже, 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 появиться в полноэкранном или расширенном режиме.

Другие вопросы по тегам