我如何循环通过一个多列列表框在WPF

本文关键字:一个 WPF 列表 何循环 循环 | 更新日期: 2023-09-27 18:10:26

我是WPF的初学者。我担心这听起来像是一个愚蠢的问题。

我有一个两列的列表框。每个列表框项包含一个水平堆叠面板,该面板依次包含文本块。

列表框为空,每个列表框项由最终用户通过放置在其他地方的几个文本框添加。第一列接受字符串,第二列只接受百分比。

(我已经附加了用户正在添加新行的事件子的相关部分)

Private Sub btnAddItem_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles btnAddSplit.Click
'...
Dim ListBoxItemName As New TextBlock
ListBoxItemName.Text = Name.Text
ListBoxItemName.Width = 170
Dim ListBoxItemValue As New TextBlock
ListBoxItemValue.Text = SplitValue.Text
ListBoxItemValue.Width = 70
Dim ListBoxStackPanel As New StackPanel
ListBoxStackPanel.Orientation = Orientation.Horizontal
ListBoxStackPanel.Children.Add(ListBoxItemName)
ListBoxStackPanel.Children.Add(ListBoxItemValue)
Dim NewEntry As New ListBoxItem
NewEntry.Content = ListBoxStackPanel
MyListBox.Items.Add(NewEntry)
'...
End Sub 

我希望能够在每次触发上述事件时检查百分比列不超过100%。我在列表框本身下面有几个标签,我想在其中显示运行总数和剩余部分。

我的问题是:

1)如何循环遍历百分比的第二列以显示运行总数和余数?

2)有什么比ListBox更合适的东西可以使这更容易吗?

我将感谢任何形式的指导对这个解决方案,无论是在VB或c#。非常感谢。

我如何循环通过一个多列列表框在WPF

根据您的代码示例,您似乎遇到了我刚开始使用WPF时遇到的相同问题。要摆脱代码隐藏的心态并接受数据绑定是很困难的,但我认为您应该尝试一下。你可能会发现这是值得的。

最终,我认为你最好的选择是绑定一些对象集合到列表框,然后遍历这个集合,像…

<ListBox ItemsSource="{Binding StringPercentageCollection}" ... />和绑定你的列,或你的文本块,或任何你的布局是,"YourStringPercentageObject"的公共属性。

然后"StringPercentageCollection"可能是数据上下文中YourStringPercentageObject的ObservableCollection(或其他一些集合)。然后你就可以正常地遍历observable集合了

如果可能的话,我会在另一个字段中跟踪百分比。这将把你的实现从你的用户界面中分离出来,这通常是个好主意。