C# 将WPF数据表转换为CollectionViewSource,并将其用于ViewList

C# 将WPF数据表转换为CollectionViewSource,并将其用于ViewList,c#,wpf,xaml,collectionviewsource,C#,Wpf,Xaml,Collectionviewsource,我已经从数据库中获取了数据,现在我想将其放入CollectionViewSource中,然后将其用作ListView的源。我想这样做,以便我可以过滤ListView。但是我不明白如何将数据表从c#传递到XAML CollectionViewSource <Window.Resources> <ResourceDictionary > <CollectionViewSource x:Key="NamesOfCompany"/> &

我已经从数据库中获取了数据,现在我想将其放入CollectionViewSource中,然后将其用作ListView的源。我想这样做,以便我可以过滤ListView。但是我不明白如何将数据表从c#传递到XAML CollectionViewSource

<Window.Resources>
    <ResourceDictionary >
        <CollectionViewSource x:Key="NamesOfCompany"/>
    </ResourceDictionary>
</Window.Resources>

<ListView x:Name="listView" ...
          ItemsSource="{Binding Source={StaticResource NamesOfCompany}}" >
    <ListView.View>
        <GridView>
            <GridViewColumn Header="CompanyName" 
                DisplayMemberBinding="{Binding CompanyName}" />
        </GridView>
   </ListView.View>
</ListView>

<Grid Margin="2,441.5,-2,0" Grid.Row="1" >
   <TextBox x:Name="txt_search" Height="22" TextWrapping="Wrap" Text="{Binding TextSearch,UpdateSourceTrigger=PropertyChanged}" Width="234" Margin="0,0,451,8" TextChanged="txt_search_TextChanged" HorizontalAlignment="Right" VerticalAlignment="Bottom" VerticalContentAlignment="Center"/>
</Grid>

我不确定如何将dt中的所有数据分配到CollectionViewSource。

不需要CollectionViewSource绑定到datatable。只需将datatable直接连接到ItemsSource。一种方法是在代码背后

DataView dv = new DataView();
dv.Table = dt;
dv.Filter = "CompanyName='abc'";
listView.ItemsSource = dv;

CopyDeVIEW源有一个源代码属性,可以从代码后面设置DataBind,但是DATABATE和CollectionViewSource是旧的,考虑使用EF和MVVM。我听说MVVM是如何工作的?是的,我正在使用它,但是我想能够过滤ITOK。还有很多方法可以做到这一点。我已经编辑了我的答案。这个过滤器会像一个搜索框一样工作吗?当你输入时,它会改变它显示的内容吗?是的,当然。我不是建议您将过滤器硬编码为“abc”。
DataView dv = new DataView();
dv.Table = dt;
dv.Filter = "CompanyName='abc'";
listView.ItemsSource = dv;