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

时间:2015-01-27 11:00:45

标签: c# wpf xaml

我正在开发一个项目,我必须通过ILSpy从反编译代码构建。当我尝试编译XAML代码时,我收到此错误:

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

XAML的标题部分定义如下:

<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背后的类定义如下:

public partial class ... : UserControl

例如以下行引发异常:

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

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

任何人都可以提供我可以查看的提示/想法或我可以做些什么来解决这个问题?

部分班级的另一半:

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

我注意到它遗漏了IStyleConnector(ILSpy计数器部分有它)。

编辑:忘了提及项目引用的内容:

  • Microsoft.CSharp
  • PresentationCore
  • PresentiationFramework
  • 系统
  • System.Core程序
  • System.Data
  • System.Datat.DataSetExtensions
  • System.Xaml
  • 的System.Xml
  • System.Xml.Linq的
  • WindowsBase

1 个答案:

答案 0 :(得分:2)

Property 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名称空间。