Load the Items in a ListBox Asynchronously
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="WPF" Height="200" Width="300"
Loaded="Window_Loaded">
<Window.Resources>
<DataTemplate x:Key="ListItemTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" VerticalAlignment="Center"/>
</StackPanel>
</DataTemplate>
</Window.Resources>
<StackPanel>
<ListBox x:Name="listBox" ItemTemplate= "{StaticResource ListItemTemplate}"/>
</StackPanel>
</Window>
//File:Window.xaml.vb
Imports System.Collections.ObjectModel
Imports System.Windows
Imports System.Windows.Threading
Namespace WpfApplication1
Public Partial Class Window1
Inherits Window
Private numberDescriptions As ObservableCollection(Of String)
Public Sub New()
InitializeComponent()
End Sub
Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)
numberDescriptions = New ObservableCollection(Of String)()
listBox.ItemsSource = numberDescriptions
Me.Dispatcher.BeginInvoke(DispatcherPriority.Background, New LoadNumberDelegate(AddressOf LoadNumber), 1)
End Sub
Private Delegate Sub LoadNumberDelegate(number As Integer)
Private Sub LoadNumber(number As Integer)
numberDescriptions.Add("Number " & number.ToString())
Me.Dispatcher.BeginInvoke(DispatcherPriority.Background, New LoadNumberDelegate(AddressOf LoadNumber), System.Threading.Interlocked.Increment(number))
End Sub
End Class
End Namespace
Related examples in the same category