我很长时间以来一直在使用以下错误配件模板:
<ControlTemplate x:Key="ErrorAdornerTemplateStyle" TargetType="{x:Type Control}">
<Grid ClipToBounds="False" >
<Border BorderBrush="Red" BorderThickness="2" Margin="-1"
ToolTip="{Binding ElementName=adornedElement, Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent }">
<AdornedElementPlaceholder Name="adornedElement" />
</Border>
<Polygon Points="15,15 15,0 0,0"
Fill="Red"
HorizontalAlignment="Right"
VerticalAlignment="Top"
ToolTip="{Binding ElementName=adornedElement, Path=AdornedElement.(Validation.Errors).CurrentItem.ErrorContent }"/>
</Grid>
</ControlTemplate>
...它在运行时工作得很好(据我所知)。
然而,在过去一个月对VS和WPF以及NET Standard 2进行了一系列升级后,我注意到我的syles xaml文件中的intellisense给了我CurrentItem
的以下错误标识符
该物业&#39; CurrentItem&#39;未在类型&#39; ReadOnlyObservableCollection&#39;中找到。
这只是一个令人讨厌的VS错误,还是VS警告我需要适应的WPF子系统中的某种变化?
答案 0 :(得分:13)
ReadOnlyObservableCollection
本身不会公开CurrentItem
属性。相反,CurrentItem
是CollectionView
的概念,它是在WPF中绑定项集合时内部创建的。
在绑定路径中使用/
,有一些special support to access the CurrentItem
集合。
将绑定路径更改为Path=AdornedElement.(Validation.Errors)/ErrorContent
以使用此支持。