【发布时间】:2012-03-14 13:30:55
【问题描述】:
在 WPF 窗口中绑定组合框时遇到一个奇怪的问题。
我正在加载一个 List 对象,通过它的 .ItemsSource 在 Window Load 上填充组合框,但是,它没有填充。
至少在点击箭头之前是这样。单击箭头后,窗口冻结,大约一分钟后,其中显示 4000 多条记录。
现在,列表已加载,但是,当我单击组合框时,它需要一段时间才能呈现,那么如何在呈现列表时显示等待光标?
这是它的 Xaml:
<ComboBox Grid.Column="1"
HorizontalAlignment="Stretch" Margin="3" Name="tUser" VerticalAlignment="Stretch"
DisplayMemberPath="UsersName" SelectedValuePath="UserID" SelectedValue="0"/>
后面的代码是:
Private Sub CreateTask_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
Using New WaitCursor
_LA.Show()
Me.tOrder.ItemsSource = GetOrderList()
Me.tUser.ItemsSource = GetUserList()
_LA.Hide()
End Using
End Sub
Private Function GetUserList() As List(Of UserTyping)
Dim _Qry As New List(Of UserTyping)
Using db As New DataAccess
With db
.QueryType = CmdType.InlineSQL
.Query = "Select 0 As UserID, '-Select User-' As UsersName Union All Select userID As UserID, userFullName As UsersName From vwSelectUser"
Using _Results = .GetResults()
If _Results IsNot Nothing Then
If _Results IsNot Nothing Then
_Qry = (From row In _Results.Cast(Of DbDataRecord)()
Select New UserTyping() With {
.UserID = Common.IsNull(Of Long)(row, 0, 0),
.UsersName = Common.IsNull(Of String)(row, 1, String.Empty)
}).ToList()
Else
_Qry = New List(Of UserTyping)
End If
End If
End Using
End With
End Using
Return _Qry
_Qry.Clear()
End Function
Partial Public Class UserTyping
Public Property UserID As Long
Public Property UsersName As String
End Class
【问题讨论】:
-
只需将代码从“ComboBox Click”事件移动到“form load”事件。您在此处提供的代码是用于将项目添加到列表而不是组合框。
-
对不起,忘了先提这个,除非你使用多线程,否则加载你的应用程序仍然需要一段时间。
-
请重新阅读我发布的代码。组合框是由拉取数据的函数填充的,而组合框点击事件中什么都没有