C# 如何使CollectionViewSource在DataGrid上显示列表
我有3个数据网格。第二个和第三个datagrid应根据第一个datagrid上的选定行,仅显示第一个datagrid中的值子集 C#: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
如何在第三个数据网格上显示相关结果?最终找到了解决方案。我没有绑定到单独的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>