none
WPF里关于列表控件的数据绑定后的显示问题(在线等) RRS feed

  • 问题

  • using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Shapes;
    using System.Collections;
    
    namespace comboboxDEMO
    {
        /// <summary>
        /// Window2.xaml 的交互逻辑
        /// </summary>
        public partial class Window2 : Window
        {
            ArrayList myAL;
            public Window2()
            {
                InitializeComponent();
                myAL = new ArrayList();
                myAL.Add("Hello");
                myAL.Add("World");
                myAL.Add("!");
                comboBox1.ItemsSource = myAL;
                myAL.Add("2");
                myAL.Add("3");
                myAL.Add("4");
                listBox1.ItemsSource = myAL;
            }
    
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                myAL.Add("5");
                myAL.Add("6");
                myAL.Add("7");
                System.Diagnostics.Debug.Print(comboBox1.MaxDropDownHeight.ToString());
                //comboBox1.MaxDropDownHeight = 0;
            }
    
            private void button2_Click(object sender, RoutedEventArgs e)
            {
                myAL.Add("15");
                myAL.Add("16");
                myAL.Add("17");
            }
        }
    }
    
    一个wpf窗体上,2个按钮1个ComboBox和1个ListBox.
    先说ComboBox,下拉部分数据绑定了myAL,如果程序运行后,我先去点击下拉列表,则正常显示6项。然后我添加后,比如点击其他按钮,下拉列表则 还是现实6项,但是通过方向键能选中到新的3项,是不是下拉列表高度设置的问题?在combobox的属性里,只有一个最大列表高度,其他没找到能设置下 拉列表高度值的。
    同样,程序运行后,我先不去点击下拉列表,先进行增加myAL项,比如点击个按钮,再去点击ComboBox的下拉列表,则能正常显示9项。
    感觉下来就是wpf下的也就是System.Windows.Controls.ComboBox,在一次显示下拉列表后,他就内部设定了下拉列表的长度,之后再修改下拉项,长度不会随之改变。

    再来看listbox,这个直接就比较干脆,运行后,再怎么修改myAL,都不会在显示上有新增,应该是在窗体构造完毕后,直接就决定了长度吧?也不太清楚。

    有人能解决这个列表控件的下拉显示问题么?
    2009年10月14日 5:23