我正在将一个
我认为我可以通过
XAML:
DataGrid
绑定到ICollectionView
,以便我可以有效地过滤ItemsSource,但是ICollectionView
不是泛型类型(例如CollectionView<MyType>
) - 它是List<object>
类型。因此,在XAML编辑器中,VisualStudio无法确定类型,所以我无法获得任何IntelliSense帮助来绑定集合视图中对象的属性。它仍然可以构建和运行,但我在设计时没有获得帮助。
重述问题:有没有办法在XAML中“转换”数据绑定?我认为我可以通过
<DataGrid.DataContext>
做些什么,但我记不清了,而且我也没有在谷歌上找到任何有用的信息:XAML:
<DataGrid ItemsSource="{Binding MyCollectionView}">
<DataGrid.DataContext>
<!-- Specify the type of objects in MyCollectionView somehow -
something like 'x:type="MyType"' -->
</DataGrid.DataContext>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<!-- Cannot resolve property 'Approved' in data context of type 'MyProject.MainWindow'. -->
<DataTrigger Binding="{Binding Approved}" Value="False">
<Setter Property="Background" Value="LightGray" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<!-- Cannot resolve property 'Approved' in data context of type 'object'. -->
<DataGridTextColumn Header="Is Approved"
Binding="{Binding Approved}"
Width="3*" />
</DataGrid.Columns>
</DataGrid>
代码后台:
public partial class MainWindow : Window, INotifyPropertyChanged
{
public ICollectionView MyCollectionView { get; set; }
public MainWindow(List<MyType> parameter)
{
// ...
MyCollectionView = new CollectionView(parameter);
// ...
}
}
public class MyType
{
public bool Approved { get; set; }
// ...
}
List<object>
是一个通用的集合类型。我们能否看到MyCollectionView
被定义如何,以及该集合本身如何被定义?集合中的对象是否实际上具有名为Approved
的属性? "recognized"是什么意思? - 15ee8f99-57ff-4f92-890c-b56153ItemsSource
实际上是List<MyType>
,而不是List<object>
- 获取所有智能感知和类型检查的好处。我更新了我的问题以回应您的评论。 - tehDorfICollectionView
在C#中并不是“泛型”(ICollectionView
是.NET类型)。所谓“未被识别”,是指我在“Approved”下面得到了一个建议波浪线,并且消息显示为“无法解析类型'MyProject.MainWindow'上下文中的属性'Approved'”。我更新了我的问题以回应您的评论。 - tehDorf