WPF控件中的奇怪滚动条行为
我制作了以下简单控件,我将其作为弹出窗口添加到另一个窗口中(开始隐藏,单击按钮变为可见) 除了列表框侧面的滚动条外,一切似乎都很正常。这大约从整个控件的一半高度开始,当试图向下滑动列表时,列表不会滚动,但滚动条会缩小到一个小条,然后开始滚动到窗口的内容。同样,向上拖动该条:当该条位于滚动区域的一半时,列表框将到达列表的顶部,然后该条将展开 谁能帮我纠正这种行为/解释我做错了什么 谢谢。 皮特 经过更多的实验,事情变得越来越奇怪 导入AshbyTools 导入System.DirectoryServices.AccountManagement 导入System.ComponentModel 公共类AddGroupsCtrl Dim\u domainString作为字符串 作为字符串的暗字符串WPF控件中的奇怪滚动条行为,wpf,wpf-controls,Wpf,Wpf Controls,我制作了以下简单控件,我将其作为弹出窗口添加到另一个窗口中(开始隐藏,单击按钮变为可见) 除了列表框侧面的滚动条外,一切似乎都很正常。这大约从整个控件的一半高度开始,当试图向下滑动列表时,列表不会滚动,但滚动条会缩小到一个小条,然后开始滚动到窗口的内容。同样,向上拖动该条:当该条位于滚动区域的一半时,列表框将到达列表的顶部,然后该条将展开 谁能帮我纠正这种行为/解释我做错了什么 谢谢。 皮特 经过更多的实验,事情变得越来越奇怪 导入AshbyTools 导入System.DirectorySe
Public Event addClicked(ByVal glist As List(Of String))
<Description("ouString"), DisplayName("OU String"), Category("Data")>
Public Property ouString As String
Get
Return _ouString
End Get
Set(value As String)
_ouString = value
End Set
End Property
<Description("domainString"), DisplayName("Domain String"), Category("Data")>
Public Property domainString As String
Get
Return _domainString
End Get
Set(value As String)
_domainString = value
End Set
End Property
Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
Me.Visibility = Visibility.Hidden
End Sub
Public Sub loadGroups()
grouplistBox.Items.Clear()
Dim groupCTX As PrincipalContext = ADTools.getConnection(domainString, ouString)
Dim gList As List(Of GroupPrincipal) = ADTools.getManagedGroups(groupCTX)
Dim gsList As New List(Of String)
For Each grp As GroupPrincipal In gList
If Not (grp.DistinguishedName.Contains("Staff Groups") Or grp.DistinguishedName.Contains("Subject Groups") Or grp.DistinguishedName.Contains("Tutor Groups")) Then
gsList.Add(grp.DisplayName)
End If
Next
'For n As Integer = 1 To 70
' grouplistBox.Items.Add("item" & n)
'Next
gsList.Sort()
For Each grp As String In gsList
grouplistBox.Items.Add(grp)
Next
End Sub
Private Sub addButton_Click(sender As Object, e As RoutedEventArgs) Handles addButton.Click
Dim ret As New List(Of String)
For Each grp In grouplistBox.SelectedItems
ret.Add(grp.ToString)
Next
RaiseEvent addClicked(ret)
End Sub
Public Event addClicked(ByVal glist作为列表(字符串))
公共属性ouString作为字符串
得到
返回字符串
结束
设置(值为字符串)
_uString=值
端集
端属性
公共属性domainString作为字符串
得到
返回\u域字符串
结束
设置(值为字符串)
_域字符串=值
端集
端属性
私有子按钮\单击(发送者作为对象,e作为路由EventTargets)处理按钮。单击
Me.Visibility=Visibility.Hidden
端接头
公共子加载组()
grouplistBox.Items.Clear()
Dim groupCTX As PrincipalContext=ADTools.getConnection(域字符串,ouString)
Dim gList As List(组主体的)=ADTools.getManagedGroups(groupCTX)
将gsList变为新列表(字符串)
对于每个grp,作为gList中的GroupPrincipal
如果不是(grp.DifferentiedName.Contains(“员工组”)或grp.DifferentiedName.Contains(“主题组”)或grp.DifferentiedName.Contains(“导师组”)),则
gsList.Add(grp.DisplayName)
如果结束
下一个
'对于n作为整数=1到70
'grouplistBox.Items.Add(“item”&n)
”“接着呢
gsList.Sort()
对于gsList中的每个grp作为字符串
grouplistBox.Items.Add(grp)
下一个
端接头
私有子添加按钮\单击(发件人作为对象,e作为路由EventTargets)处理添加按钮。单击
Dim ret作为新列表(字符串)
对于grouplistBox中的每个grp.SelectedItems
ret.Add(grp.ToString)
下一个
RaiseEvent添加已单击(ret)
端接头
末级
如果替换
对于gsList中的每个grp作为字符串
grouplistBox.Items.Add(grp)
下一个
使用注释掉的代码,滚动条可以完美地工作。
通过gsList中的字符串列表,我得到了奇怪的行为
我可以发布整个项目,但由于它是针对我们的active directory结构硬编码的,因此无法在另一个系统上编译。(另外,由于我只是用它来学习WPF,而且它是一个内部工具,我已经硬编码了许多密码)好的,我已经解决了这个问题。答案更令人困惑。结果是,在代码中,我得到了要添加到字符串列表中的组的DisplayName,它为每个字符串返回“Nothing”。但不知何故,列表显示正确(尽管有一个扭曲的滚动条)。现在我将其更改为返回grp.name而不是displayname,并且一切都如我所期望的那样工作。好的,我已经解决了这个问题。答案更令人困惑。结果是,在代码中,我得到了要添加到字符串列表中的组的DisplayName,它为每个字符串返回“Nothing”。但不知何故,列表显示正确(尽管有一个扭曲的滚动条)。现在我把它改为返回grp.name而不是displayname,一切都如我所期望的那样工作。是我,还是WPF有可怕的马车?
For Each grp As String In gsList
grouplistBox.Items.Add(grp)
Next
Public Event addClicked(ByVal glist As List(Of String))
<Description("ouString"), DisplayName("OU String"), Category("Data")>
Public Property ouString As String
Get
Return _ouString
End Get
Set(value As String)
_ouString = value
End Set
End Property
<Description("domainString"), DisplayName("Domain String"), Category("Data")>
Public Property domainString As String
Get
Return _domainString
End Get
Set(value As String)
_domainString = value
End Set
End Property
Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
Me.Visibility = Visibility.Hidden
End Sub
Public Sub loadGroups()
grouplistBox.Items.Clear()
Dim groupCTX As PrincipalContext = ADTools.getConnection(domainString, ouString)
Dim gList As List(Of GroupPrincipal) = ADTools.getManagedGroups(groupCTX)
Dim gsList As New List(Of String)
For Each grp As GroupPrincipal In gList
If Not (grp.DistinguishedName.Contains("Staff Groups") Or grp.DistinguishedName.Contains("Subject Groups") Or grp.DistinguishedName.Contains("Tutor Groups")) Then
gsList.Add(grp.DisplayName)
End If
Next
'For n As Integer = 1 To 70
' grouplistBox.Items.Add("item" & n)
'Next
gsList.Sort()
For Each grp As String In gsList
grouplistBox.Items.Add(grp)
Next
End Sub
Private Sub addButton_Click(sender As Object, e As RoutedEventArgs) Handles addButton.Click
Dim ret As New List(Of String)
For Each grp In grouplistBox.SelectedItems
ret.Add(grp.ToString)
Next
RaiseEvent addClicked(ret)
End Sub