Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VB.Net在WPF中以编程方式添加listview项后更新它们_Wpf_Vb.net_Listview_Listviewitem - Fatal编程技术网

使用VB.Net在WPF中以编程方式添加listview项后更新它们

使用VB.Net在WPF中以编程方式添加listview项后更新它们,wpf,vb.net,listview,listviewitem,Wpf,Vb.net,Listview,Listviewitem,我是vb.net开发人员,是WPF的新手 我正在将Windows窗体应用程序转换为WPF,在添加listview项时更新它们时遇到问题。我在应用程序中有一个通信过程,它连接到服务器,使用tcp连接向服务器发送或从服务器下载信息。此过程更新listview以显示与服务器的通信状态。但是当我添加这些项目时,它们不会显示出来,而是在流程完成时,它们都是可见的。我希望在添加项目时刷新这些项目。在Windows窗体中,我使用了以下代码: ListView1.EnsureVisible(ListView1

我是vb.net开发人员,是WPF的新手

我正在将Windows窗体应用程序转换为WPF,在添加listview项时更新它们时遇到问题。我在应用程序中有一个通信过程,它连接到服务器,使用tcp连接向服务器发送或从服务器下载信息。此过程更新listview以显示与服务器的通信状态。但是当我添加这些项目时,它们不会显示出来,而是在流程完成时,它们都是可见的。我希望在添加项目时刷新这些项目。在Windows窗体中,我使用了以下代码:

 ListView1.EnsureVisible(ListView1.Items.Count - 1) 
witch将确保最后一项在listview中可见。但是,该代码在WPF中不起作用。我正在寻找一个替代方案来实现这一点。任何建议都是受欢迎的,即使它使用另一个元素而不是listview。或者,如果有人知道使用C#的替代方案,也欢迎使用

更新我的listview的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
<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>
每当我想更新listview以显示通信状态时,都会使用此子项

我的XAML代码如下所示:

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
<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>

提前感谢