【问题标题】:XmlnsDefinitionAttribute combined with x:Name causes compilation error with code generationXmlnsDefinitionAttribute 结合 x:Name 导致代码生成编译错误
【发布时间】:2011-03-21 20:44:49
【问题描述】:

我在 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 中尝试过,结果是一样的。谁能告诉我我做错了什么?

【问题讨论】:

    标签: xaml silverlight-4.0


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 2023-01-05
      • 1970-01-01
      • 2017-01-27
      • 2017-01-30
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多