如何在WPF中循环遍历多列列表框?

时间:2011-10-05 16:30:05

标签: c# wpf vb.net visual-studio-2010 listbox

我是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#中,我都会感谢任何形式的解决方案。非常感谢你。

2 个答案:

答案 0 :(得分:1)

根据您的代码示例,看起来好像您遇到了我第一次使用WPF时遇到的相同问题。很难放弃代码隐藏的心态并接受数据绑定,但我认为你应该试一试。你可能会发现这是值得的。

最终,我认为最好的办法是将一些对象集合绑定到列表框,然后遍历此集合,如...

<ListBox ItemsSource="{Binding StringPercentageCollection}" ... />并将您的列或文本块或任何布局绑定到“YourStringPercentageObject”的公共属性。

然后“StringPercentageCollection”可能是数据上下文中YourStringPercentageObject的ObservableCollection(或其他一些集合)。然后你就可以正常迭代可观察的集合了。

答案 1 :(得分:0)

如果可能的话,我会跟踪另一个字段中的百分比。这会将您的实现与用户界面分开,这通常是一个好主意。