C# 如何使CollectionViewSource在DataGrid上显示列表

C# 如何使CollectionViewSource在DataGrid上显示列表,c#,wpf,data-binding,datagrid,collectionviewsource,C#,Wpf,Data Binding,Datagrid,Collectionviewsource,我有3个数据网格。第二个和第三个datagrid应根据第一个datagrid上的选定行,仅显示第一个datagrid中的值子集 C#: 如何在第三个数据网格上显示相关结果?最终找到了解决方案。我没有绑定到单独的CollectionViewSource,而是将第一个数据网格命名为x:Name=“FList”,然后使用绑定到ElementName=FList,Path=SelectedItem,然后将路径定义为所需的属性 <StackPanel DataContext="{Binding El

我有3个数据网格。第二个和第三个datagrid应根据第一个datagrid上的选定行,仅显示第一个datagrid中的值子集

C#:


如何在第三个数据网格上显示相关结果?

最终找到了解决方案。我没有绑定到单独的CollectionViewSource,而是将第一个数据网格命名为x:Name=“FList”,然后使用绑定到ElementName=FList,Path=SelectedItem,然后将路径定义为所需的属性

<StackPanel DataContext="{Binding ElementName=FList, Path=SelectedItem, Mode=TwoWay}" Name="StackPanel2" >
    <TextBox Text="{Binding Path=ForumOptions.Country.CountryName}"/>
</StackPanel>


选项
项属性
CountryName
Country
ForumOptions
?是的,有。我认为问题在于类型不匹配。例如,第二个datagrid工作正常,因为Fuser返回的是一个集合,但是FOptions只返回一个对象,并且它与CollectionViewSource资源冲突。我只是不知道怎么解决它。
<Window.Resources>
    <CollectionViewSource Source="{Binding F}" x:Key="CVSF" x:Name="CVSF" />
    <CollectionViewSource Source="{Binding FUsers, Source={StaticResource CVSF}}" x:Key="CVSUsers" x:Name="CVSUsers" />
    <CollectionViewSource Source="{Binding FOptions, Source={StaticResource CVSF}}" x:Key="CVSOptions" x:Name="CVSOptions" />
</Window.Resources>
// Datagrid 1:
<DataGrid ItemsSource="{Binding Source={StaticResource CVSF}}" />

// Datagrid 2:
<DataGrid ItemsSource="{Binding Source={StaticResource CVSUsers}}">
   <DataGrid.Columns>
      <DataGridTextColumn Binding="{Binding User.UserUsername}" Header="UserName" x:Name="UserCol2" />
   </DataGrid.Columns>
</DataGrid>

// Datagrid 3:
<DataGrid ItemsSource="{Binding Source={StaticResource CVSOptions}}" PresentationTraceSources.TraceLevel="High" >
   <DataGrid.Columns>
      <DataGridTextColumn Binding="{Binding CountryName}" Header="Country1" />
      <DataGridTextColumn Binding="{Binding Country.CountryName}" Header="Country2" />
      <DataGridTextColumn Binding="{Binding ForumOptions.Country.CountryName}" Header="Country3" />
   </DataGrid.Columns>
</DataGrid>
System.Windows.Data Error: 5 : Value produced by BindingExpression 
is not valid for target property.;
Value='System.Data.Entity.DynamicProxies.ForumOptions_0DF21D7'
BindingExpression:Path=ForumOptions; 
DataItem='ListCollectionView' (HashCode=34116599); 
target element is 'CollectionViewSource' (HashCode=62307935); 
target property is 'Source' (type 'Object')
<StackPanel DataContext="{Binding ElementName=FList, Path=SelectedItem, Mode=TwoWay}" Name="StackPanel2" >
    <TextBox Text="{Binding Path=ForumOptions.Country.CountryName}"/>
</StackPanel>