У меня очень простой пользовательский элемент управления, и я пытаюсь создать его экземпляр в XAML. Я обнаружил, что когда я переусердствую с пространством имен, у меня возникают проблемы с x: Name.
Вот мой UserControl:
<UserControl x:Class="UserControlTest.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="300" Height="300">
<Grid>
<Label Name="Label1">Label</Label>
</Grid>
</UserControl>
Вот код для UserControl:
Namespace UserControlTest
Partial Public Class UserControl1
End Class
End Namespace
Теперь обратите внимание, что у меня корневое пространство имен моего проекта VB.Net установлено в «UserControlTest». Зная это, взгляните на мое главное окно:
Вот мое главное окно:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:control="clr-namespace:UserControlTest.UserControlTest"
Title="Window1" Height="300" Width="300">
<Grid>
<control:UserControl1 />
</Grid>
</Window>
Посмотрите, как псевдоним элемента управления должен иметь «UserControlTest.UserControlTest»? Это потому, что у меня корневое пространство имен моего проекта установлено в UserControlTest, и я также определил пространство имен UserControl как UserControlTest. Если я не использую пространство имен для UserControl, у меня нет проблем.
Однако, поскольку я сделал это, сборка завершается неудачно, если я пытаюсь применить x: Name к UserControl, как показано ниже:
<control:UserControl1 x:Name="test"/>
Это не удастся собрать, с этой ошибкой:
Type 'UserControlTest.UserControlTest.UserControl1' is not defined.
Кто-нибудь может объяснить, почему? Нужно ли мне избегать помещения пользовательских элементов управления в пространства имен только для того, чтобы я мог дать им значения x: Name? Я хотел бы манипулировать своими UserControls из-за кода, и без x: Name, я в порядке. Но я не хочу жертвовать использованием пространства имен только ради того, чтобы его получить!
Большое спасибо.