Listview项目没有更新wpf vb.net

时间:2014-04-09 13:11:25

标签: wpf vb.net listview

我正在创建一个应用程序,我们在列表视图中打开一个可以选择的新窗口,我们提取listview中的一个项目并将其传递到另一个窗口上的另一个列表视图。我可以在主窗口上填充列表视图,并且可以在调试期间使用.items.count验证项目是否已添加但是它们没有实时添加。如果我执行.show打开另一个窗口实例,我会看到那里的项目,但由于我不打算关闭主窗口,你如何'刷新'列表视图以显示明显的选项?

我已经读过如果列表视图被绑定到一个表,你可以重新绑定数据来刷新它,但是因为这个列表视图没有绑定到任何东西,只是用.add函数添加项目,我不知道如何'刷新'它来显示价值。

编辑: 这是我目前的代码,

Public Class ObservableColl

    Public Structure Steps
        Private _Steps As List(Of String)
        Property Steps() As List(Of String)
            Get
                Return _Steps
            End Get
            Set(ByVal value As List(Of String))
                _Steps = value
            End Set
        End Property
    End Structure

    Dim songs As New ObservableCollection(Of Steps)

End Class


 Private Sub CloseForm()
        Dim stepArr As String() = Split(sCommon.presetSteps, ",")
        Dim entries As New List(Of String)

        For i = 0 To stepArr.Count - 1
            entries.Add(stepArr(i))
        Next

        sCommon.form1.entries.Add(New Steps With {.Steps = entries}) 'Add list entries to the observableCollection
        sCommon.form1.lvwCurrentSteps.DataContext = entries 'Assign the DataContext property to the observableCollection

        If Not PresetList Is Nothing Then 
            Me.Close() 'Close this form and focus returns to the main window
        End If

    End Sub

<ListView Margin="49,23,0,33" HorizontalAlignment="Left" Width="230" Name="lvwCurrentSteps" SelectionMode="Multiple" ItemsSource="{Binding}" >
            <ListView.ItemContainerStyle>
                <Style TargetType="{x:Type ListViewItem}">
                    <Setter Property="BorderBrush" Value="LightGray" />
                    <Setter Property="BorderThickness" Value="0,0,0,1" />
                </Style>
            </ListView.ItemContainerStyle>
            <ListView.View>
                <GridView x:Name="myGridView">
                    <GridViewColumn Width="220" Header="Steps to run"  DisplayMemberBinding="{Binding Path=Steps}">
                    </GridViewColumn>                                    
                </GridView>
            </ListView.View>
        </ListView>

我可以使用此方法验证列表视图中是否有项目,但当焦点返回到原始窗口时,列表视图不会使用这些值“刷新”。

?sCommon.form1.lvwCurrentSteps.Items.Count
3

1 个答案:

答案 0 :(得分:0)

很难从这个片段中分辨出来,但看起来你的逻辑在这两行中是倒退的:

sCommon.form1.entries.Add(New Steps With {.Steps = entries}) 'Add list entries to the observableCollection
sCommon.form1.lvwCurrentSteps.DataContext = entries 'Assign the DataContext property to the observableCollection

我希望您想要使用的DataContext将是您刚添加的集合,而不是您添加的局部变量(List Of String,因此没有{ {1}}属性以支持您的Steps)。 DisplayMemberBinding类的设置方式似乎有点奇怪,ObservableColl个对象包含ObservableCollection

我不确定计数会发生什么,但你应该验证你的基本逻辑是否真的按照你的意思行事。