У меня проблема с созданием пользовательского элемента управления с двумя коллекциями контента.для простоты мы скажем, что его элементы управления двумя элементами.
в коде позади Я выставляю эти itemCollections, так что я могу фактически объявить содержимое в другом элементе управления.
например
<!-- User Control xaml -->
<UserControl>
<StackPanel Orientation="Horizontal" >
<ItemsControl x:Name="_itemsControl1" />
<ItemsControl x:Name="_itemsControl2" />
</StackPanel>
</UserControl>
//in the codebehind for user control
public partial class TwoControls
{
public ItemCollection ItemsOne { get { return _itemsControl1.Items; }}
public ItemCollection ItemsTwo { get { return _itemsControl2.Items; }}
}
<!-- Using the control in xaml later -->
<Custom:TwoControls>
<Custom:TwoControls.ItemsOne>
<TextBox />
<TextBox />
<TextBox />
<TextBox />
<TextBox />
</Custom:TwoControls.ItemsOne>
<Custom:TwoControls.ItemsTwo>
<Button />
<Button />
<Button />
<Button />
<Button />
</Custom:TwoControls.ItemsTwo>
<Custom:TwoControls>
Это на самом деле прекрасно работает с одной маленькой проблемой.Как только я пытаюсь назвать какой-либо из элементов управления, я получаю следующую ошибку:
<!-- Using the control in xaml later -->
<Custom:TwoControls>
<Custom:TwoControls.ItemsOne>
<TextBox x:Name="txt"/>
Невозможно установить значение атрибута Name 'txt' для элемента 'TextBox'.«TextBox» находится в области действия элемента «TwoControls», имя которого уже зарегистрировано, когда оно было определено в другой области.
Если бы мне фактически не приходилось называть элементы управления, я бы не стал 'т.У нас есть некоторые инструменты, которые работают, ожидая, что определенные элементы управления содержимым будут названы, так что как часть процесса сборки мне нужно, чтобы у них были имена.Стоит также отметить, что у меня на самом деле есть пара событий, связанных в моем классе TwoControls, если бы мне пришлось извлечь это из шаблона данных, я думаю, что я мог бы заставить его работать, но мне пришлось бы работать над ним немного больше, чем сейчас.
Любая информация о том, почему это так, была бы замечательной.