Search code examples
wpfautocompletebox

wpf autocompletebox default dropdown area is too small


I set the autocompletebox just like this:

         <StackPanel Orientation="Horizontal">
            <StackPanel Width="120">
                <Label Content="Address"/>
                <Controls:AutoCompleteBox x:Name="AddressBox" MaxDropDownHeight="300" Populating="Address_Populating"/>
            </StackPanel>
            <StackPanel Width="120" Margin="40, 0, 0, 0">
                <Label Content="Port"/>
                <TextBox x:Name="PortBox" />
            </StackPanel>
            <Button x:Name="ConnectButton" Content="Connect" Margin="40, 0, 0, 0" VerticalAlignment="Bottom" Width="80" Height="35" Click="ConnectButton_Clicked"/>
        </StackPanel>

But the max number of items displayed in the dropdown window is only 3. I am sure that the candidate number is larger than 3. I want to increase the number of items which will be displayed in the dropdown window.

For example, i want to show 15 candidateAddress's items. And the dropdown window will be displayed and 3 items will be showed firstly. But I hope it can show 5 items firstly, which means that the display area should be expanded.

The logical code of this control is:

    private void Address_Populating(object sender, PopulatingEventArgs e)
    {
        string dirFile = "../../Config/Address.config";

        if (File.Exists(dirFile))
        {
            var candidateAddress = new List<string>();
            string input = null;

            using (StreamReader sr = File.OpenText(dirFile))
            {
                while ((input = sr.ReadLine()) != null)
                {
                    candidateAddress.Add(input);
                }
            }

            AddressBox.ItemsSource = candidateAddress;
            AddressBox.PopulateComplete();
        }
        else
        {
            System.Windows.MessageBox.Show("Address.config does not exist");
        }
    }

Solution

  • i can't add a pic to comment. so i add it here.

    top pic : MaxDropDownHeight=50

    bottom: MaxDropDownHeight=300

    you mean like this?

    enter image description here

    you can creat a new project:

         <Grid>
            <control:AutoCompleteBox x:Name="AddressBox" FontSize="30" MaxDropDownHeight="300"
    Populating="Address_Populating" Margin="0,0,0,287.283" />
        </Grid>
    

    background code:

    private void Address_Populating(object sender, PopulatingEventArgs e)
            {
                List<int> lst = new List<int>();
                for (int i = 10; i < 25; i++)
                {
                    lst.Add(i);
                }
                AddressBox.ItemsSource = lst;
                AddressBox.PopulateComplete();
            }
    

    the reason is found by kylejan: i found the reason. the display area will be influenced by the former window. for example, the window i put this control on is opend by the main window. then this autocomplete box will be influenced by the size of the main window