0

データセットからデータを描画する WPF プロジェクトがあります。ある特定のビューにグリッドがあり、フィルタリングされたバージョンのデータを表示したい

BindingListView をフィルター処理できないことを読みましたが、これは CollectionViewSource です

私のコードはこれです:-

Private Sub UserControl_Loaded_1(sender As Object, e As RoutedEventArgs) Handles MyBase.Loaded

 Dim _ds As CantileverDataSet
 Dim _carcasseTableAdapter As CantileverDataSetTableAdapters.MaterialsTableAdapter
 Dim _carcasseViewSource As CollectionViewSource

 _ds = CType(Me.FindResource("CantileverDataSet"), CantileverDataSet)

 _carcasseTableAdapter = New CantileverDataSetTableAdapters.MaterialsTableAdapter
 _carcasseTableAdapter.Fill(_ds.Materials)
 _carcasseViewSource = CType(Me.FindResource("MaterialsViewSource"), CollectionViewSource)

 AddHandler _carcasseViewSource.Filter, AddressOf CarcasseFilter
End Sub

Private Sub CarcasseFilter(ByVal sender As System.Object, ByVal e As FilterEventArgs)
    'Accept everything for now

    e.Accepted = True
End Sub

私が得るエラーは

'System.Windows.Data.BindingListCollectionView' ビューはフィルタリングをサポートしていません。

  • _carcasseViewSource.GetType を実行すると CollectionViewSource を取得します
  • _carcasseViewSource.View.GetType を実行すると、BindingListCollectionView を取得します

_carcasseViewSource を BindingListCollectionView として扱っているかのようです

念のため、グリッドの XAML を次に示します。

    <Grid x:Name="CarcasseGrid" DataContext="{StaticResource MaterialsViewSource}" >
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition Width="Auto"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Label Content="Material Code:" Grid.Column="0" Grid.Row="0"/>
        <TextBox x:Name="MaterialCodeTextBox" Grid.Column="1" Grid.Row="0" Text="{Binding MaterialCode, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
        <Label Content="Name:" Grid.Column="0" Grid.Row="1"/>
        <TextBox x:Name="NameTextBox" Grid.Column="1" Grid.Row="1" Text="{Binding Name, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}"/>
    </Grid>
4

1 に答える 1

0

データセット/データテーブルを操作するときにIBindingListView.Filterを使用できます。

フィルター式については、これを見てください

于 2013-06-04T12:14:14.677 に答える