3

我在 Universal Apps 项目上为 windows phone 8.1 创建 ComboBox,但我想始终在全屏页面上显示所有项目。在 windows phone 8 我做

ListPicker.ExpansionMode = ExpansionMode.FullScreenOnly;

但是,在 Windows phone 8.1 的 ComboBox 中,我没有找到选项。

我怎么解决这个问题?

谢谢!

4

3 回答 3

9

WP8.1 中的 ComboBox 控件将决定在 FullScreen 或 DropDown 列表中显示项目。当您的项目数 > 5时,它将显示在全屏中。否则,它将显示在下拉列表中。我们无法通过代码更改它。

于 2014-04-30T01:58:28.963 回答
1

迟到的答案,但希望它可以帮助别人。

默认情况下,仅当项目数超过 5 项时,组合框才会显示长列表。如果您需要显示组合框的全屏,您可以将列表选择器弹出窗口附加到按钮来代替组合框。我猜这将是理想的解决方案。并且几乎满足了longlist的所有实现

于 2016-04-19T11:45:10.940 回答
0

如果(您在组合框中有 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);
    }
}
于 2015-04-19T11:40:34.863 回答