這是bug中的AutoCompleteBox控件。
當DropDown首次打開時,UI虛擬化未使用,控件將創建所有項目。
要解決這個問題必須在AutoCompleteBox ControlTemplate中設置MaxHeight到電網下拉彈出的。這是此ControlTemplate的XAML部分:
<ControlTemplate TargetType="sdk:AutoCompleteBox">
<Grid Opacity="{TemplateBinding Opacity}">
...
<Popup x:Name="Popup">
<Grid Opacity="{TemplateBinding Opacity}" MaxHeight="450">
<Border x:Name="PopupBorder" BorderThickness="0" Background="#11000000" HorizontalAlignment="Stretch" Opacity="0">
<Border.RenderTransform>
<TranslateTransform X="1" Y="1"/>
</Border.RenderTransform>
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="0" HorizontalAlignment="Stretch" Opacity="1.0" Padding="0">
<Border.Background>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FFDDDDDD" Offset="0"/>
<GradientStop Color="#AADDDDDD" Offset="1"/>
</LinearGradientBrush>
</Border.Background>
<Border.RenderTransform>
<TransformGroup>
<TranslateTransform X="-1" Y="-1"/>
</TransformGroup>
</Border.RenderTransform>
<ListBox x:Name="Selector" BorderThickness="0" Background="{TemplateBinding Background}" Foreground="{TemplateBinding Foreground}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ItemTemplate="{TemplateBinding ItemTemplate}" ItemContainerStyle="{TemplateBinding ItemContainerStyle}" ScrollViewer.VerticalScrollBarVisibility="Auto"/>
</Border>
</Border>
</Grid>
</Popup>
</Grid>
</ControlTemplate>
這適用於我。
我已將MinimumPrefixLength設置爲2,這是我希望在可能的情況下保留它的位置。有沒有辦法在拉入列表後創建這些視覺元素,而不是等到用戶開始鍵入?在列表被指定爲數據源後,我嘗試在Text屬性中添加兩個常用字符,但它沒有幫助。 – Feckmore 2009-10-29 12:39:25