Я впервые использую пользовательский элемент управления, так что, надеюсь, это просто глупая ошибка.
У меня есть простой пользовательский элемент управления
<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 в элементе управления.
Мне удалось найти пост об этом здесь:
.g.vb файл утверждает, что тип X не определен, хотя он и есть!
Очевидно, существует проблема, когда у проекта есть ссылка на службу (в моем случае я использую службы RIA), а пользовательский элемент управления находится в сборке с тем же корневым пространством имен, что и то, в котором вы пытаетесь его использовать.
Так для меня это было,
TestProject.WebApp
Затем я попытался создать новый проект только для элемента управления
TestProject.Controls
Та же проблема.
Затем, когда я переименовал проект и изменил пространство имен на
CustomControls
это сработало.
Надеюсь, это спасет кого-то от разочарования, и я очень надеюсь, что эта проблема может быть исправлена MS в ближайшее время.
То, что вы показываете здесь, должно работать.Каково пространство имен по умолчанию в свойствах вашего проекта?Также вы переименовали свой пользовательский элемент управления после того, как создали его.Обе эти проблемы могут вызывать у вас проблемы.