Добавление x: Name к пользовательскому элементу управления дает ошибку в сгенерированном коде страницы, используемой в - PullRequest
2 голосов
/ 22 октября 2010

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

У меня есть простой пользовательский элемент управления

<UserControl x:Class="TestProject.WebApp.myUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices"
    xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk">

    <Grid>
        <sdk:AutoCompleteBox Name="myACB" ItemsSource="{Binding Data}" FilterMode="StartsWith" MinimumPrefixLength="2" >
        </sdk:AutoCompleteBox>
    </Grid>
</UserControl>

Я использую элемент управления вдругая страница (в панели стека):

<navigation:Page x:Class="TestProject.WebApp.myPageView" 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
           mc:Ignorable="d"
           xmlns:local="clr-namespace:TestProject.WebApp"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation">
    <Grid>
        <StackPanel Orientation="Horizontal">
            <local:myUserControl x:Name="myUC" />
        </StackPanel>
    </Grid>
</navigation:Page>

Элемент управления находится в том же пространстве имен, что и страница.Удаление x: Name позволяет компилировать проект, и элемент управления работает функционально.Когда указано x: Name, в сгенерированном коде страницы появляется ошибка:

Тип 'TestProject.WebApp.myUserControl' не определен.

Это происходит в следующих строках кода:

internal TestProject.WebApp.myUserControl myUC;

this.myUC == (TestProject.WebApp.myUserControl)this.FindName("myUC")

Я пробовал с двумя разными элементами управления.То же самое.Сгенерированный код имеет «using TestProject.WebApp;»поэтому я не знаю, почему возникает ошибка, только когда у меня есть именованный экземпляр элемента управления.

Я также не могу использовать только свойство Name.Я даже пытался перегрузить NameProperty в элементе управления.

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Мне удалось найти пост об этом здесь:

.g.vb файл утверждает, что тип X не определен, хотя он и есть!

Очевидно, существует проблема, когда у проекта есть ссылка на службу (в моем случае я использую службы RIA), а пользовательский элемент управления находится в сборке с тем же корневым пространством имен, что и то, в котором вы пытаетесь его использовать.

Так для меня это было,

TestProject.WebApp

Затем я попытался создать новый проект только для элемента управления

TestProject.Controls

Та же проблема.

Затем, когда я переименовал проект и изменил пространство имен на

CustomControls

это сработало.

Надеюсь, это спасет кого-то от разочарования, и я очень надеюсь, что эта проблема может быть исправлена ​​MS в ближайшее время.

0 голосов
/ 24 октября 2010

То, что вы показываете здесь, должно работать.Каково пространство имен по умолчанию в свойствах вашего проекта?Также вы переименовали свой пользовательский элемент управления после того, как создали его.Обе эти проблемы могут вызывать у вас проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...