Windows phone 7.1 ListPicker, простой способ перехода в полный режим?
Я пытаюсь использовать контроллер ListPicker
с ListPickerMode="Full"
, чтобы получить полноэкранное окно выбора. Однако он просто генерирует ошибку при попытке
"В System.Windows.dll произошла первая случайная ошибка типа" System.Windows.Markup.XamlParseException "
Дополнительная информация: Установить свойство 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 в С#, используя список для установки как ItemSource, если это какая-то помощь.
Другое дело, что когда я пытаюсь написать "ListPickerMode" в xml, он делает это как опцию, но когда я написал все это, предлагаю "Полный" "расширенный" и "Обычный".
Если я добавлю 5 элементов в ListPicker, он автоматически использует FullMode, и я попытался изменить ItemCountThreshold = "0", но это просто порождает больше ошибок.
Я использую версию Windowns Phone 7.1 OS 2011 aug.
Вероятно, только мне, что это глупо, первый день с программным обеспечением Windows Phone:)
ОБНОВЛЕНИЕ!
Ну, похоже, что ItemCountThreshold и ListPickerMode были удалены для 7.1 или чего-то, по крайней мере, в части XAML, а не в части С#, где они доступны только для чтения.
Решение моей проблемы!
<toolkit:ListPicker x:Name="OutputSelector" ExpansionMode="FullScreenOnly"
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />
ExpansionMode заставит Listpicker появляться в полноэкранном режиме или расширенном.
Ответы
Ответ 1
Как указано в контролере ошибок инструментария 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
Ответ 2
Решение, предложенное автором (перемещение для лучшей видимости):
Ну, похоже, что ItemCountThreshold и ListPickerMode были удалены для 7.1 или что-то, по крайней мере, в части XAML, а не в части С#, где они доступны только для чтения.
Решение моей проблемы!
<toolkit:ListPicker x:Name="OutputSelector" ExpansionMode="FullScreenOnly"
Margin="0,542,6,0" Header="Output Type" Width="450" VerticalAlignment="Top" />
ExpansionMode заставит Listpicker появляться в полноэкранном режиме или расширен.