2011-10-05 55 views
0

我是WPF的初学者。我担心这可能听起来像一个愚蠢的问题。如何循环访问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#。非常感谢你。

回答

1

根据你的代码示例,看起来好像你正在经历我刚开始使用WPF时遇到的相同问题。我们很难放弃这种隐藏背后的心态,并且接受数据绑定,但我认为您应该尝试一下。你可能会发现它是值得的。

最后,我想你最好的选择。将对象绑定到列表框的一些集合,然后通过这个集合,就像迭代...

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

然后“StringPercentageCollection”可能是数据上下文中的ObservableCollection(或其他某个集合)YourStringPercentageObject。然后你就可以正常地遍历可观察集合。

+0

感谢您的提示,我会转而研究这种方法。数据绑定,我来了! – Adil

0

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