XmlnsDefinitionAttribute与x:Name结合使用会导致代码生成时出现编译错误

时间:2010-07-27 21:37:21

标签: xaml silverlight-4.0

我遇到了使用Silverlight 4程序集中的XmlnsDefinition属性的问题。

以下是测试用例:

在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>

查看生成的.g.i.cs文件,控件被声明为

internal SomeControl bar;

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

1 个答案:

答案 0 :(得分:0)