2010-07-27 101 views
0

我有和使用silverlight 4程序集内的XmlnsDefinition属性的问题。XmlnsDefinitionAttribute与x:Name结合导致编译错误,代码生成

这里的测试用例:

在Silverlight项目中的AssemblyInfo.cs我添加以下内容:

[assembly: XmlnsDefinition("urn:foo", "SilverlightApplication1")] 
[assembly: XmlnsDefinition("urn:foo", "SilverlightApplication1.SomeNamespace")] 

我编辑MainPage.xaml.cs中,并使它看起来像这样:

namespace SilverlightApplication1 
{ 
    public partial class MainPage : UserControl 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

namespace SilverlightApplication1.SomeNamespace 
{ 
    public class SomeControl : ContentControl 
    { 
    } 
} 

现在在MainPage.xaml中我有以下几点:

<UserControl x:Class="SilverlightApplication1.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
    xmlns:foo="urn:foo"> 

    <Grid> 
     <foo:SomeControl> 
      <TextBlock Text="Hello World"/> 
     </foo:SomeControl> 
    </Grid> 

</UserControl> 

这个编译和运行良好。当我将x:Name属性添加到SomeControl标记时,会发生此问题。

这并不编译:

<foo:SomeControl x:Name="bar"> 
    <TextBlock Text="Hello World"/> 
</foo:SomeControl> 

望着那被生成的.gics文件,控制被声明为

internal SomeControl bar; 

文件之一是缺少using语句或完整类型名称。我也在WPF中尝试过,结果是一样的。谁能告诉我什么,如果有的话,我做错了?

回答