为什么AdornedElement。(Validation.Errors).CurrentItem.ErrorContent now(VS2017 15.4)导致intellisense错误?

时间:2017-11-08 17:06:51

标签: wpf visual-studio xaml

我很长时间以来一直在使用以下错误配件模板:

<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子系统中的某种变化?

1 个答案:

答案 0 :(得分:13)

ReadOnlyObservableCollection本身不会公开CurrentItem属性。相反,CurrentItemCollectionView的概念,它是在WPF中绑定项集合时内部创建的。

在绑定路径中使用/,有一些special support to access the CurrentItem集合。

将绑定路径更改为Path=AdornedElement.(Validation.Errors)/ErrorContent以使用此支持。