0

出现编译器错误

src:FieldDefUsrFldUsrs

错误 8 XML 命名空间“clr-namespace:Gabe2a”中不存在标记“FieldDefUsrFldUsrs”。第 14 行位置 10. C:\My Dev\CommonSource\Gabriel\Gabe2a\Gabe2Acollection\Gabe2aI55\PageSearchFieldUsrFld.xaml 14 10 Gabe2a

如何修复此错误?

<Page x:Class="Gabe2a.PageSearchFieldUsrFld"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="300"
      DataContext="{Binding RelativeSource={RelativeSource self}}"
      xmlns:local="clr-namespace:Gabe2a"
      xmlns:src="clr-namespace:Gabe2a"
      ShowsNavigationUI="False"
    Title="PageSearchFieldUsrFld">
    <Page.Resources>
        <src:FieldDefUsrFldUsrs x:Key="MyList"/>
        <HierarchicalDataTemplate DataType = "{x:Type src:League}"
                                ItemsSource = "{Binding Path=Divisions}">
            <TextBlock Text="{Binding Path=Name}"/>
        </HierarchicalDataTemplate>

namespace Gabe2a
{
    public partial class PageSearchFieldUsrFld : Page
    {            
        private List<GabeLib.FieldDefUsrFldUsr> fieldDefUsrFldUsrs = new List<GabeLib.FieldDefUsrFldUsr>();
        public List<GabeLib.FieldDefUsrFldUsr> FieldDefUsrFldUsrs { get { return fieldDefUsrFldUsrs; } }

namespace Gabe2a {
    public class GabeLib : INotifyPropertyChanged
    {
        [Serializable()]
        public class FieldDefUsrFldUsr 
        {
4

1 回答 1

0

好吧,您尝试在 XAML 中实例化嵌套类,但在 WPF 中仍然不行。有关该问题的一些详细信息和 MSDN 链接,请参阅此答案,该链接说明了要在 XAML 中使用的自定义类的规则:

您的自定义类不能是嵌套类。嵌套类及其常规 CLR 使用语法中的“点”会干扰其他 WPF 和/或 XAML 功能,例如附加属性。

这仍然与框架版本 4.5 相关。

至于如何避免这种情况......你有任何真正的理由使用嵌套类吗?对于项目组织来说,简单地使用点分命名空间通常就足够了:

namespace Gabe2a.GabeLib 
{
    public class GabeLib : INotifyPropertyChanged         
    {}

    [Serializable()]
    public class FieldDefUsrFldUsr 
    {}
}

因此,您似乎无法在 XAML 中实例化嵌套类,但您仍然可以在DataTemplates不更改当前类结构的情况下使用它等:

<DataTemplate DataType="{x:Type local:GabeLib+FieldDefUsrFldUsr}">
    ...
</DataTemplate>
于 2013-11-15T07:59:41.103 回答