我正在创建一个应用程序,我们在列表视图中打开一个可以选择的新窗口,我们提取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
答案 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
。
我不确定计数会发生什么,但你应该验证你的基本逻辑是否真的按照你的意思行事。