"http://schemas.microsoft.com/winfx/2006/xaml" 中不存在属性 "ConnectionId"

The attribute "ConnectionId" does not exist in "http://schemas.microsoft.com/winfx/2006/xaml"

我正在处理一个必须通过 ILSpy 从反编译代码构建的项目。当我尝试编译 XAML 代码时,出现此错误:

The attribute 'ConnectionId' from the XAML namespace is not defined.

XAML的header部分定义如下:

<UserControl x:Class="..." Name="..." Loaded="..." SizeChanged="..." 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:vtbc="clr-namespace:..."
    xmlns:p="clr-namespace:..."
    xmlns:local="clr-namespace:...">  

而XAML后面的class定义如下:

public partial class ... : UserControl

异常是由以下行引发的:

<Style x:Key="{x:Type DataGridCell}" TargetType="{x:Type DataGridCell}" x:ConnectionId="16" />

据我所知,它的作用是将数字附加到组件,以便稍后可以附加相应的事件处理程序。

任何人都可以提供 hints/ideas 我可以在哪里查看或我可以做些什么来解决这个问题?

另一半部分class:

public partial class ... : System.Windows.Controls.UserControl, System.Windows.Markup.IComponentConnector {

我注意到它缺少 IStyleConnector(ILSpy 计数器部分有)。

编辑:忘记提及项目引用的是什么:

属性ConnectionId 位于 XAML 命名空间中,如参考所述:https://msdn.microsoft.com/de-de/library/system.xaml.xamllanguage.connectionid(v=vs.110).aspx

xaml 文件根目录中的定义:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

指的是两个 wpf-xaml 命名空间(无前缀)和 xaml 语言(有前缀)。

我从未使用过 ConnectionId,但我希望它驻留在 XAML 命名空间中,正如 msdn 所解释的那样。 然而,情况并非如此,这就是为什么您会遇到此错误,因为 属性 未在 http://schemas.microsoft.com/winfx/2006/xaml.

中定义

但是在 http://schemas.microsoft.com/winfx/2006/xaml/presentation 命名空间中。