Как показать все элементы ComboBox на полноэкранной странице?

Я создаю ComboBox для Windows Phone 8.1 в проекте универсальных приложений, но я хотел бы всегда показывать все элементы на полноэкранной странице. На windows phone 8 делаю

ListPicker.ExpansionMode = ExpansionMode.FullScreenOnly;

но в ComboBox для Windows Phone 8.1 я не нашел вариант.

Как я могу решить эту проблему?

Спасибо!


person Miguel MG    schedule 29.04.2014    source источник
comment
Вы пробовали свойство ComboBox.MaxDropDownHeight   -  person Sajeetharan    schedule 29.04.2014
comment
У меня есть <ComboBox FontSize="14" MaxDropDownHeight="0">, но не работает. Есть идеи?   -  person Miguel MG    schedule 29.04.2014


Ответы (3)


Элемент управления ComboBox в WP8.1 решит отображать элементы в полноэкранном режиме или в раскрывающемся списке. Когда ваших элементов количество> 5, они будут отображаться в полноэкранном режиме. В противном случае он будет отображаться в раскрывающемся списке. Мы не можем изменить это кодом.

person Chris Shao    schedule 30.04.2014
comment
Хорошо! Спасибо, ваш ответ помог мне. - person Miguel MG; 30.04.2014

Поздний ответ, но надеюсь, что это поможет другим.

По умолчанию в поле со списком будет отображаться длинный список, только если количество элементов превысило 5 элементов. Если вам нужно отобразить полноэкранный режим для поля со списком, вы можете прикрепить всплывающее окно списка к кнопке вместо поля со списком. Это было бы идеальным решением, я думаю. И это почти удовлетворяет всем реализациям лонглиста

person kiranghule27    schedule 19.04.2016

Если (у вас есть 3 элемента в поле со списком), то { Также добавьте 3 элемента в поле со списком с содержимым " " }

Добавьте этот обработчик:

private void DoSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    ComboBox cb = (sender as ComboBox);
    if (cb.SelectedIndex > -1)
    {
        string s = (cb.SelectedValue as ComboBoxItem).Content as string; 
        if (s == " ")
        {
            cb.SelectedIndex = cb.GetLastIndex();
        }
    }
    cb.SetLastIndex(cb.SelectedIndex);
}

public static class Extensions
{
    private static Dictionary<ComboBox, int> _lastIndex = new Dictionary<ComboBox, int>();
    public static int GetLastIndex(this ComboBox me)
    {
        return _lastIndex.ContainsKey(me) ? _lastIndex[me] : -1;
    }
    public static void SetLastIndex(this ComboBox me, int NewValue)
    {
        if (_lastIndex.ContainsKey(me))
            _lastIndex[me] = NewValue;
        else
            _lastIndex.Add(me,NewValue);
    }
}
person Dmitry Suraev    schedule 19.04.2015