Имя TemplateSelector не существует в пространстве имен.

Я получаю эту ошибку:

Ошибка 1. Имя «TemplateSelector» не существует в пространстве имен «using: MyApps».

но я не знаю почему, потому что, когда я создаю новый проект и вставляю в него тот же код, все работает, поэтому проблема только в моем старом проекте. Я также пытаюсь очистить или перестроить проект 100 раз и вручную удалить папку bin, но все равно не работает.

<Page
x:Class="MyApps.BlankPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApps"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

...

<UserControl>
    <UserControl.Resources>
        <!-- Template for INCOMNIG messages -->
        <DataTemplate x:Key="IncomnigTemplate">
            <Grid>

                <Grid  Margin="27,0,0,0"  HorizontalAlignment="Left" Background="#BFE8FF" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="auto"></RowDefinition>
                        <RowDefinition Height="auto"></RowDefinition>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding MessengerMessage}" HorizontalAlignment="Left"  Margin="5,5,20,0" VerticalAlignment="Top" Foreground="black"></TextBlock>
                    <TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding MessengerTime}" HorizontalAlignment="Left"  Margin="5,0,0,5" VerticalAlignment="Bottom" FontSize="9" Foreground="#908C8C"></TextBlock>
                </Grid>
            </Grid>
        </DataTemplate>

        <!-- Template for OUTGOING messages -->
        <DataTemplate x:Key="OutgoinTemplate">
            <Grid>

                <Grid  Margin="27,0,0,0"  HorizontalAlignment="Right" Background="Gray" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="auto"></RowDefinition>
                        <RowDefinition Height="auto"></RowDefinition>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Column="0" Grid.Row="0" Text="{Binding MessengerMessage}" HorizontalAlignment="Left"  Margin="5,5,20,0" VerticalAlignment="Top" Foreground="black"></TextBlock>
                    <TextBlock Grid.Column="0" Grid.Row="1" Text="{Binding MessengerTime}" HorizontalAlignment="Left"  Margin="5,0,0,5" VerticalAlignment="Bottom" FontSize="9" Foreground="#908C8C"></TextBlock>
                </Grid>
            </Grid>
        </DataTemplate>

        <!-- datatemplate selector -->
        <local:TemplateSelector x:Key="MessageTemplateSelector"
                          EmptyTemplate="{x:Null}"
                          IncomingMessageTemplate="{StaticResource IncomnigTemplate}"
                          OutgoingMessageCaptureTemplate="{StaticResource OutgoinTemplate}"/>

    </UserControl.Resources>
    <ListBox ItemTemplateSelector="{StaticResource MessageTemplateSelector}" x:Name="lbChoosenMessagesUsers"  Grid.Column="3" FontSize="13" ItemsSource="{Binding MyDatasCurentUser}" Margin="0,0,50,0">
        <ListBox.ItemContainerStyle>
            <Style TargetType="ListBoxItem">
                <Setter Property="IsEnabled" Value="False"/>
            </Style>
        </ListBox.ItemContainerStyle>
    </ListBox>
</UserControl>

Класс TeplateSelector внутри проекта:

public class TemplateSelector : DataTemplateSelector
{
    public DataTemplate IncomingMessageTemplate { get; set; }
    public DataTemplate OutgoingMessageCaptureTemplate { get; set; }
    public DataTemplate EmptyTemplate { get; set; }

    public new DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        var x = item as Message;
        if (x != null)
        {
            return null;
        }

        return EmptyTemplate;
    }
}

person pavol.franek    schedule 04.10.2013    source источник
comment
Не могли бы вы вставить декларацию XMLNS UserControl или она находится на странице?   -  person Farhan Ghumra    schedule 04.10.2013
comment
да, это внутренняя страница xaml. Ссылка на него здесь› stackoverflow.com/questions/18757615/   -  person pavol.franek    schedule 04.10.2013
comment
Есть ли еще какая-нибудь ошибка, кроме этой?   -  person Farhan Ghumra    schedule 04.10.2013
comment
Каково содержание UserControl? Почему он пустой? Вы пытались вставить DataTemplate в Page.Resouurce?   -  person Farhan Ghumra    schedule 04.10.2013
comment
Нет другой ошибки, и я могу создать свое приложение, когда у меня есть эта ошибка, что интересно, но страница, на которой я использовал этот xaml, очищена/повреждена. Да, я пытаюсь поместить его в ресурсы страницы, но получаю ту же ошибку.   -  person pavol.franek    schedule 04.10.2013
comment
вот полный xaml: dropbox.com/s/6un6ab4u4pu3suk/MessagesPage.xaml   -  person pavol.franek    schedule 04.10.2013
comment
Где вы используете пользовательский контроль? Пользовательские элементы управления должны быть в отдельных файлах. Почему это между кодом?   -  person Farhan Ghumra    schedule 04.10.2013
comment
как отделить его в первый раз, когда я его использую. Теперь у меня есть код управления пользователем на странице xaml, где у меня есть элементы пользовательского интерфейса, это плохо? Если да, можете ли вы сказать мне, как это должно быть в порядке   -  person pavol.franek    schedule 04.10.2013
comment
Я не уверен, чего вы хотите достичь. Вы используете TemplateSelector для списка, список является частью пользовательского контроля, но где используется этот пользовательский контроль?   -  person Farhan Ghumra    schedule 04.10.2013
comment
хорошо, я получаю его на работу. ‹UserControl Grid.Column=3› теперь я показываю сообщения в пользовательском интерфейсе. Ошибка с пространством имен все еще здесь, но она выглядит как проблема с визуальной студией, теперь код работает. Спасибо за время.   -  person pavol.franek    schedule 04.10.2013


Ответы (1)


У меня тоже часто возникает такая проблема. Мое решение простое: просто закройте все открытые файлы XAML, а затем снова соберите проект. Меня устраивает.

person SimonFisher    schedule 04.10.2013
comment
Да, я пытаюсь очистить, восстановить, закрыть все и т. д., перезагрузить компьютер, очистить папки bin и т. д., но проблема все еще здесь. Как я уже сказал, код хорош, потому что, когда я использую его в новом проекте, нет проблем, он выглядит как проблема с файлами кеша VS или я не знаю. - person pavol.franek; 04.10.2013
comment
измените этот общедоступный новый DataTemplate SelectTemplate (элемент объекта, контейнер DependencyObject) на общедоступное переопределение DataTemplate SelectTemplateCore (элемент объекта, контейнер DependencyObject) - person SimonFisher; 04.10.2013
comment
Я меняю его, но получаю сообщение Не могу изменить модификатор доступа при переопределении «защищенного» унаследованного члена, поэтому я меняю общедоступный на защищенный, но я не уверен, что все в порядке, но проблема с пространством имен все еще здесь. - person pavol.franek; 04.10.2013
comment
Да, он должен быть защищен. Закрыли ли вы все файлы xaml при сборке? - person SimonFisher; 04.10.2013
comment
да, все было закрыто, но я думаю, когда я его пересоберу, уберу и соберу исходники, но да, все страницы и классы были закрыты. - person pavol.franek; 04.10.2013