单击ItemsControl中的最后一项时不需要的滚动

时间:2012-02-28 10:50:59

标签: wpf itemscontrol scrollviewer

案例:启用虚拟化的ItemsControl(性能)。包含复选框/文本框/等。但是,单击最后一个可见项目上的复选框/文本框会导致itemscontrol向下滚动而不是选中复选框/文本框。 虚拟化禁用,一切正常...... 我尝试了很多东西(使用ListView,将它包装在更大的面板中等)。没有运气。

ItemsSource在代码后面设置为具有属性Name和ID的testitems的大型数据集。

<Window x:Class="ListViewTestApplication.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="650" Width="525" Background="AliceBlue">

<ItemsControl x:Name="MainListView" VirtualizingStackPanel.IsVirtualizing="True"
ScrollViewer.CanContentScroll="True">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid DataContext="{Binding}" Width="525">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                </Grid.RowDefinitions>
                <Label Height="50" Grid.Row="0" Content="{Binding Path=Name}"/>
                <CheckBox Height="50" Content="Checkbox" Grid.Row="1" />
                <TextBox Height="50" Grid.Row="2" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.Template>
        <ControlTemplate>
            <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}"
        BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True">
                <ScrollViewer Padding="{TemplateBinding Control.Padding}" Focusable="False">
                    <ItemsPresenter SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
                </ScrollViewer>
            </Border>
        </ControlTemplate>
    </ItemsControl.Template>
</ItemsControl>

0 个答案:

没有答案