2010-09-30 2 views
3

Это моя сводка. Это не похоже на виртуализацию, но я не могу понять, почему. Вы знаете что-нибудь, что могло бы вызвать это?WPF: что может привести к тому, что ComboBox не будет виртуализоваться?

<ComboBox Grid.Row="0" Grid.Column="2" 
    SelectedValuePath="PrimaryKey" 
    SelectedValue="{Binding CustomerKey}" 
    ItemsSource="{Binding CustomerCanidates}"> 
    <ComboBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel/> 
     </ItemsPanelTemplate> 
    </ComboBox.ItemsPanel> 
</ComboBox> 

ответ

3

Проверить стили, применяемые к элементу управления. Например, стиль «Shiny Blue» от Microsoft определяется как таковую:

<ControlTemplate x:Key="ComboBoxTextBox" TargetType="{x:Type TextBox}"> 
    <Border x:Name="PART_ContentHost" Focusable="False" Background="{TemplateBinding Background}"/> 
</ControlTemplate> 


<Style TargetType="{x:Type ComboBox}"> 
    <Setter Property="SnapsToDevicePixels" Value="true"/> 
    <Setter Property="Template" Value="{DynamicResource ComboBoxTemplate}" /> 
</Style> 

<ControlTemplate x:Key="ComboBoxTemplate" TargetType="{x:Type ComboBox}"> 
    <Grid> 
     <ToggleButton Grid.Column="2" Template="{DynamicResource ComboBoxToggleButton}" x:Name="ToggleButton" Focusable="false" IsChecked="{Binding Path=IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" ClickMode="Press"/> 
     <ContentPresenter HorizontalAlignment="Left" Margin="3,3,23,3" x:Name="ContentSite" VerticalAlignment="Center" Content="{TemplateBinding SelectionBoxItem}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" IsHitTestVisible="False"/> 

     <TextBox Visibility="Hidden" Template="{DynamicResource ComboBoxTextBox}" HorizontalAlignment="Left" Margin="3,3,23,3" x:Name="PART_EditableTextBox" Style="{x:Null}" VerticalAlignment="Center" Focusable="True" Background="Transparent" IsReadOnly="{TemplateBinding IsReadOnly}"/> 

     <Popup IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" x:Name="Popup" Focusable="False" AllowsTransparency="True" PopupAnimation="Slide"> 
      <Grid MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{TemplateBinding ActualWidth}" x:Name="DropDown" SnapsToDevicePixels="True"> 
       <Border x:Name="DropDownBorder" Background="{DynamicResource ShadeBrush}" BorderBrush="{DynamicResource SolidBorderBrush}" BorderThickness="1"/> 
       <ScrollViewer Margin="4,6,4,6" SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" CanContentScroll="True"> 

        <StackPanel IsItemsHost="True" KeyboardNavigation.DirectionalNavigation="Contained"/> 

       </ScrollViewer> 
      </Grid> 
     </Popup> 
    </Grid> 
    <ControlTemplate.Triggers> 
     <Trigger Property="HasItems" Value="false"> 
      <Setter Property="MinHeight" Value="95" TargetName="DropDownBorder"/> 
     </Trigger> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Foreground" Value="{DynamicResource DisabledForegroundBrush}"/> 
     </Trigger> 
     <Trigger Property="IsGrouping" Value="true"> 
      <Setter Property="ScrollViewer.CanContentScroll" Value="false"/> 
     </Trigger> 
     <Trigger Property="AllowsTransparency" SourceName="Popup" Value="true"> 
      <Setter Property="Margin" Value="0,0,0,0" TargetName="DropDownBorder"/> 
      <Setter Property="CornerRadius" TargetName="DropDownBorder" Value="3,3,3,3"/> 
     </Trigger> 
     <Trigger Property="IsEditable" Value="true"> 
      <Setter Property="IsTabStop" Value="false"/> 
      <Setter Property="Visibility" Value="Visible" TargetName="PART_EditableTextBox"/> 
      <Setter Property="Visibility" Value="Hidden" TargetName="ContentSite"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 

Простое изменение его от StackPanel к VirtualizingStackPanel фиксированная моя проблема.

1

Попробуйте установить это свойство тоже:

<ComboBox VirtualizingStackPanel.IsVirtualizing="True" 
+0

Увы, это не изменило его. –

+0

Хм, это странно. Это всегда работало для меня в TreeViews и ListViews/Boxes. Никогда не пробовал это на ComboBoxes, но я не понимаю, почему это не сработает. – Carlo

+0

Оказывается, это что-то в таблице стилей. Я скоро обновлю свой вопрос. –

Смежные вопросы