WPF控件中的奇怪滚动条行为

时间:2017-07-12 10:30:19

标签: wpf wpf-controls

我做了以下简单的控制,我将其添加到另一个窗口作为弹出窗口(开始隐藏,在按钮点击时变为可见)

UIButton

在这背后的代码中,我有以下片段......

<UserControl x:Class="AddGroupsCtrl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:ASManager2017"
         mc:Ignorable="d" d:DesignWidth="255" Height="413">

<GroupBox x:Name="groupBox" Header=" Active Directory Groups" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" Height="350" Width="233" BorderBrush="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}">
    <Grid Height="auto">

        <ListBox x:Name="grouplistBox" HorizontalAlignment="Stretch" Height="auto" Margin="0,0,0,0" VerticalAlignment="Stretch" Width="auto" SelectionMode="Extended" ScrollViewer.VerticalScrollBarVisibility="Visible" Background="{DynamicResource fadeBrush}"/>
        <Button x:Name="addButton" Content="Add" HorizontalAlignment="Right" Margin="0,0,22,0" VerticalAlignment="Bottom" Width="75"/>
        <Button x:Name="button" Content="X" HorizontalAlignment="Right" Margin="0,0,22,0" VerticalAlignment="Top" Width="20" Height="20" Background="{DynamicResource {x:Static SystemColors.ControlLightLightBrushKey}}"/>
    </Grid>
</GroupBox>

除了列表框侧面的滚动条之外,一切似乎都能正常工作。这开始于整个控件的高度的大约一半,并且当试图向下滑动时,列表不会滚动,但是滚动器缩小尺寸直到它到达一个小条,然后开始滚动到窗口的内容。同样向后拖动栏:当栏位于滚动区域的一半左右时,列表框将到达列表的顶部,然后栏将展开。

任何人都可以帮我纠正这种行为/解释我做错了吗?

感谢。 皮特。

How the control presents initially After scrolling a short way Scrolling more

经过更多的实验,事情变得越来越怪......

进口AshbyTools    Imports System.DirectoryServices.AccountManagement    Imports System.ComponentModel

公共类AddGroupsCtrl     Dim _domainString As String     Dim _ouString As String

    For Each grp As String In gsList
        grouplistBox.Items.Add(grp)
    Next

结束班

如果我替换了loadGroups()             对于每个grp As String在gsList中             grouplistBox.Items.Add(GRP)         下一步

使用注释掉的代码,滚动条完美运行。 使用gsList中的字符串列表,我得到了奇怪的行为。

我可以发布整个项目,但由于它是我们的活动目录结构的硬编码,它不会在另一个系统上编译。 (另外,因为我只是用它来学习WPF而且它是一个内部工具,我已经硬编码了很多密码)

1 个答案:

答案 0 :(得分:0)

好的,我已经解决了这个问题。答案更令人困惑。事实证明,在代码中,我得到了要添加到字符串列表中的组的DisplayName,它为每个字符串返回“Nothing”。然而不知何故正确地显示了列表(尽管有一个棘手的滚动条)。现在我已将其更改为返回grp.name而不是displayname,并且一切都按照我的预期运行。