我是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#中,我都会感谢任何形式的解决方案。非常感谢你。
答案 0 :(得分:1)
根据您的代码示例,看起来好像您遇到了我第一次使用WPF时遇到的相同问题。很难放弃代码隐藏的心态并接受数据绑定,但我认为你应该试一试。你可能会发现这是值得的。
最终,我认为最好的办法是将一些对象集合绑定到列表框,然后遍历此集合,如...
<ListBox ItemsSource="{Binding StringPercentageCollection}" ... />
并将您的列或文本块或任何布局绑定到“YourStringPercentageObject”的公共属性。
然后“StringPercentageCollection”可能是数据上下文中YourStringPercentageObject
的ObservableCollection(或其他一些集合)。然后你就可以正常迭代可观察的集合了。
答案 1 :(得分:0)
如果可能的话,我会跟踪另一个字段中的百分比。这会将您的实现与用户界面分开,这通常是一个好主意。