我是vb.net开发人员,是WPF的新手。
我正在将Windows窗体应用程序转换为WPF,我在添加listview项目时遇到问题。我在应用程序中有一个通信过程,它连接到服务器,使用tcp连接向/从中发送或下载信息。此过程更新列表视图以显示与服务器通信的状态。但是当我添加它们时,这些项目不会显示,而是在进程完成时它们都可见。我想在添加项目时刷新它们。在Windows窗体中,我使用了代码:
ListView1.EnsureVisible(ListView1.Items.Count - 1)
将确保最后一项在列表视图中可见。但该代码在WPF中不起作用。我正在寻找替代这个的替代方案。任何建议都是受欢迎的,即使它包含使用其他元素而不是列表视图。或者,如果有人知道使用C#的替代品,也欢迎。
更新我的列表视图的我的VB代码如下:
Private Sub DebugMsg(ByVal Message As String, Optional ByVal NewLine As Boolean = True)
If NewLine = True Then
Dim item As New ListViewItem
item.Content = Message
Me.ListView1.Items.Add(item)
item = Nothing
ElseIf NewLine = False Then
If ListView1.Items.Count > 0 Then
ListView1.Items(ListView1.Items.Count - 1).Content = Message
Else
Dim item As New ListViewItem
item.Content = Message
Me.ListView1.Items.Add(item)
item = Nothing
End If
End If
Me.ListView1.Items.Refresh()
End Sub
每次我想更新列表视图以显示通信状态时,都会使用此子。
我的XAML代码如下:
<ListView x:Name="ListView1" Margin="10,101,10,10" Background="#FF0C0C0C" Foreground="Cyan" FontSize="20" ItemsSource="{Binding}" >
<ListView.View>
<GridView>
<GridView.ColumnHeaderContextMenu>
<ContextMenu/>
</GridView.ColumnHeaderContextMenu>
<GridViewColumn Header="Status" Width="475"/>
</GridView>
</ListView.View>
先谢谢了!