我正在将DataGrid
绑定到ICollectionView
,以便我可以有效地过滤ItemsSource,但ICollectionView
不是generic类型(如{{1} }} - 它的类型为CollectionView<MyType>
。因此,在XAML编辑器中,VisualStudio无法确定类型是什么,因此我没有获得任何IntelliSense帮助绑定到集合视图中对象的属性。它仍在构建和运行,但我在设计时没有得到帮助。
改述问题:无论如何在XAML中“强制转换”数据绑定?
我以为我可以用List<object>
做点什么,但我不记得它是什么,我也没有任何运气用谷歌搜索:
XAML:
<DataGrid.DataContext>
代码背后:
<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>
答案 0 :(得分:2)
我以为我可以做些什么,但我不记得它是什么,我也没有任何运气谷歌搜索它:
我相信您正在寻找设计时间数据上下文。有关此内容的更多信息,请参阅以下链接。
XAML:绑定的Intellisense和数据上下文:https://blogs.msmvps.com/deborahk/xaml-intellisense-for-bindings-and-the-data-context/ How to see design-time data-binding in XAML editor (it works in runtime)?
我想问的是,是否有办法将数据绑定“转换”为XAML中的MyType集合?
没有。但您可以如上所述指定设计时DataContext。
答案 1 :(得分:0)
VisualStudio无法确定类型是什么
由于类型直到运行时才表达,并且通过代码使用反射得到,因此设计者处于劣势并且只能根据它所知道的内容进行推断。 知道的所有内容都是object
,而不是开发人员知道的完全类型。
我没有获得任何智能感知帮助......仍在构建和运行,但我在设计时无法获得帮助
如果这是阻碍您的问题,我建议您暂时将有问题的属性类型列表添加到VM(如果不是MVVM,则为页面),然后绑定到该新属性。然后设计时间看它需要什么,你可以在visual studio的帮助下获得属性信息添加绑定/样式。
一旦一切正常,请将设计时绑定原样替换为您提到的ICollection
。