神秘的AutoScrolling WPF列表框

时间:2014-06-15 17:55:51

标签: wpf xaml listbox scroll interaction

有一个非常严重的问题。我的机器是Windows7 64bit。我的列表框在我们所有的64位计算机上正常滚动。但是,在32位系统上,列表框不能正确滚动。当用户单击向下箭头以向下导航列表框列表时,它会下降,但随后会向右跳回到顶部。如果通过箭头,鼠标滚轮或单击滚动条区域来完成它并不重要。有没有人遇到过这个令人讨厌的问题,并想出办法解决它?我试过用cpu x86和All cpu发布,但无论如何都是同样的问题。

另一个注意事项:我在64位和32位操作系统之间遇到的另一个问题是将数据网格绑定到数据表。在我的系统上,如果数据表中有零行,它仍然没有问题,但在32位系统上,我们遇到绑定错误,试图绑定到行数为零的数据表。只有在一些人看到两者之间存在某种明显的相关性时才提及这一点。

Listbox XAML

<!-- System Listbox -->
    <Grid Grid.Row="2" Grid.Column="0" VerticalAlignment="Stretch">
        <DockPanel Margin="10,0,0,10" VerticalAlignment="Stretch">
            <ListBox x:Name="lbSystems" VerticalAlignment="Stretch" DockPanel.Dock="Left" Width="Auto" IsTextSearchEnabled="True" TextSearch.TextPath="{Binding Name}"
                     Background="Transparent" Foreground="{DynamicResource DynamicFrmFG}" FontFamily="Consolas" 
                     ItemsSource="{Binding Path=SystemsList}" ItemTemplate="{StaticResource mySystemTemplate}" SelectedItem="{Binding Path=SelectedSystem}" 
                     SelectionChanged="lbSystems_SelectionChanged" ContextMenuOpening="lbSystems_ContextMenuOpening">
                <ListBox.Resources>
                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="{DynamicResource DynamicCtrlHighlight}"/>
                    <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="{DynamicResource DynamicCtrlHighlight}"/>
                </ListBox.Resources>
            </ListBox>
        </DockPanel>
    </Grid>

列表框项目模板

    <Window.Resources>
    <DataTemplate x:Key="mySystemTemplate">
        <StackPanel VerticalAlignment="Stretch">
            <TextBlock Text="{Binding Mode=OneWay}" Foreground="{DynamicResource DynamicFrmFG}" FontSize="14" FontFamily="Consolas" 
                       TextWrapping="Wrap" Margin="0,2,0,2"/>
        </StackPanel>  
    </DataTemplate>
</Window.Resources>

编辑:使用.Net版本4.它的标准版本推送到所有机器。

1 个答案:

答案 0 :(得分:0)

好吧,它似乎必须处理我的网格ColumnDefinition。不是真的理解它,但下面是我以前的XAML。

    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="125" />
        <RowDefinition Height="*" />
        <RowDefinition Height="20" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300" MinWidth="300" />
        <ColumnDefinition Width="475*" />
    </Grid.ColumnDefinitions>

当我更改第一列时,如下所示,它开始在所有机器上正确滚动。

<ColumnDefinition Width="300*" MinWidth="300" />