【问题标题】:How show all items of ComboBox in fullscreen page?如何在全屏页面中显示 ComboBox 的所有项目?
【发布时间】:2014-04-29 10:44:25
【问题描述】:

我正在通用应用程序项目中为 windows phone 8.1 创建 ComboBox,但我希望始终在全屏页面上显示所有项目。在 windows phone 8 上我会这样做

ListPicker.ExpansionMode = ExpansionMode.FullScreenOnly;

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

我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 你试过 ComboBox.MaxDropDownHeight 属性
  • 我有<ComboBox FontSize="14" MaxDropDownHeight="0"> 但不工作。有什么想法吗?

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


【解决方案1】:

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

【讨论】:

  • 好的!谢谢,您的回答对我有帮助。
【解决方案2】:

迟到的答案,但希望对其他人有所帮助。

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

【讨论】:

    【解决方案3】:

    如果(组合框中有 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);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多