我设置自动完成框就像这样:
<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>
但下拉窗口中显示的最大项目数仅为3.我确信候选编号大于3.我想增加将在下拉窗口中显示的项目数。
例如,我想显示15个candidateAddress的项目。并将显示下拉窗口,首先显示3个项目。但我希望它首先能显示5个项目,这意味着应该扩展显示区域。
此控件的逻辑代码为:
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");
}
}
答案 0 :(得分:0)
我无法添加照片进行评论。所以我在这里添加它。
top pic:MaxDropDownHeight = 50
bottom:MaxDropDownHeight = 300
你是说这个意思吗?
您可以创建一个新项目:
<Grid>
<control:AutoCompleteBox x:Name="AddressBox" FontSize="30" MaxDropDownHeight="300"
Populating="Address_Populating" Margin="0,0,0,287.283" />
</Grid>
后台代码:
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();
}
原因是kylejan发现的: 我找到了原因。显示区域将受到前一个窗口的影响。例如,我把这个控件打开的窗口是由主窗口打开的。那么这个自动完成框将受到主窗口大小的影响
答案 1 :(得分:0)
没有简单的方法(包含在框架中)来准确设置要显示的项目数。但是this示例为您提供了一些代码来创建一个附加属性,该属性操纵maxheight属性以显示任何指定数量的项目。