2013-11-14 1 views
0

Попадая ошибку компилятора наКомпилятор ошибок с использованием Xmlns: ЦСИ

ЦСИ: FieldDefUsrFldUsrs

Ошибка 8 тэга 'FieldDefUsrFldUsrs' не существует в пространстве имен XML 'CLR-имен: Gabe2a'. Строка 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 
     { 
+0

Ваш 'FieldDefUsrFldUsr', похоже, не находится в пространстве имен Gabe2a. или это вложенный класс? –

+0

Я отправил def для FieldDefUsrFldUsr. private Список не выдает ошибку – Paparazzi

ответ

0

Ну, вы пытаетесь, чтобы создать экземпляр вложенного класса в XAML и `s до сих пор нет-нет в WPF. См this answer некоторые детали по этому вопросу и 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> 
+0

Это не сработало для меня. В итоге я добавил интерфейс на уровне пространства имен. – Paparazzi

Смежные вопросы