자동 완성 상자 컨트롤에 버그가 있습니다.
처음으로 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