如何在全屏页面中显示ComboBox的所有项目?

时间:2014-04-29 10:44:25

标签: c# xaml combobox windows-phone-8.1 win-universal-app

我正在为Universal Apps项目创建Windows Phone 8.1的ComboBox,但我想在全屏页面上显示所有项目。在Windows Phone 8上我做了

ListPicker.ExpansionMode = ExpansionMode.FullScreenOnly;

但是,在Windows Phone 8.1的ComboBox中,我找不到选项。

我该如何解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:9)

WP8.1中的ComboBox控件将决定在FullScreen或DropDown列表中显示项目。当您的商品计数> 5 ,它将在FullScreen中显示。 OtherWise,它将显示在DropDown列表中。我们无法通过代码对其进行更改。

答案 1 :(得分:1)

迟到的答案,但希望它有助于其他人。

默认情况下,只有当项目数超过5项时,组合框才会显示长列表。如果您需要显示组合框的全屏,可以将listpicker弹出按钮附加到按钮以代替组合框。那我认为这是理想的解决方案。它几乎满足了所有longlist

的实现

答案 2 :(得分:0)

如果(你在组合框中有3项)那么 {     另外在combobox中添加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);
    }
}