希望有人能指出我正确的方向。我有一个程序,允许用户从各种表单中选择各种提要,他们可以选择的提要来自 Access 数据库中的数据表,该数据表被放入 WPF 中的 CollectionViewSource 中。如:
<CollectionViewSource x:Key="BrandsViewSource" Source="{Binding Path=brands,
Source={StaticResource DatabaseDataSetall}}"/>
他们选择的所有提要在“id”列下都有一个唯一的 id,当他们从程序中的各种列表中选择时,他们选择的 id 被添加到名为“feedselections”的数组列表中。
我在程序内部传递了数组列表,不用担心,但我需要做的是在 WPF 中使用数组列表“feedselection”的内容填充一个列表框,然后它需要填写列表框中的所有额外字段。列表框的代码是:
<Grid Width="800" Height="80" Background="#FFE7AE4A">
<Label Content="{Binding Type}" HorizontalAlignment="Left" Height="27" Margin="8,8,0,0" VerticalAlignment="Top" Width="100" Name="typelabel" Foreground="#FFA4CE52" FontWeight="Bold"/>
<Label Content="{Binding Name}" HorizontalAlignment="Left" Height="27" Margin="115,8,0,0" VerticalAlignment="Top" Width="133"/>
<TextBox HorizontalAlignment="Left" Margin="169,35,0,17" TextWrapping="Wrap" Text="" VerticalAlignment="Stretch" Width="78" Name="foodamount"/>
</Grid>
我不确定是否最好用所有选择填充列表框,然后使用不在数组中的 collectionviewsource.filter 过滤掉选择。如果我采用该选项,我不确定是否应该使用数组、arraylist、list(of t) 或其他一些选项。
或者,我可以用数组中的所有项目填充列表框,然后以某种方式绑定其他框以使用“id”从 collectionviewsource 获取它们的数据,以从数据表中查找其余数据。
老实说,我不知道该怎么做。我花了很长时间寻找一种同时进行这两种选择的方法,但第一种似乎是最有希望的,除了无法找到从列表中过滤的人!
我在这个网站上找到了我试图使用过滤器的某人的代码,只是作为试验,我的数据,但我一直收到错误:
创建表单时出错。有关详细信息,请参阅 Exception.InnerException。错误是:'System.Windows.Data.CollectionViewSource' 的初始化引发了异常。行号“22”和行位置“55”
这是当我将 Filter="WorkerFilter" 添加到 collectionviewsource 时引起的:
<CollectionViewSource x:Key="FeedsViewSource" Source="{Binding Path=Feeds,
Source={StaticResource DatabaseDataSetall}}" Filter="WorkerFilter"/>
过滤器处理程序是:
Private Sub WorkerFilter(ByVal sender As Object, ByVal e As FilterEventArgs)
Dim value As Object = CType(e.Item, System.Data.DataRow)("ID")
If (Not value Is Nothing) And (Not value Is DBNull.Value) Then
If (value = "4") Or (value = "5") Then
e.Accepted = True
Else
e.Accepted = False
End If
End If
End Sub
对于大量的代码和写作感到抱歉,我只是想提供尽可能多的信息。
任何建议都将不胜感激,即使我必须在数据库中创建一个每次使用时都会被擦除的新表,然后我可以使用在数据库中构建的关系,我非常绝望并愿意尝试任何事情!