Я надеюсь создать элемент управления, который я называю AutoCompleteListBox. Если вы когда-либо использовали hotmail для отправки электронной почты, я хочу создать строку адреса to :. У вас есть то, что выглядит как поле ввода, и по мере ввода вы получаете выпадающий список соответствующих объектов. После выбора объекта (контакта) он добавляется в поле ввода в виде прямоугольного объекта. Таким образом можно добавить несколько объектов, и поле ввода действует как панель переноса. Вы можете удалять объекты, возвращая их назад или нажимая кнопку x на каждом.
Мой подход состоял в том, чтобы начать с создания подкласса ItemsControl. Я начал писать его шаблон управления, представляющий собой панель обтекания, в которой я хочу показать связанные элементы + текстовое поле. Я не знаю, как поместить связанные элементы и текстовое поле в одну и ту же панель переноса. Вот что у меня есть:
<Style TargetType="ctrl:AutoCompleteListBox">
<Setter Property="Width" Value="200"/>
<Setter Property="Height" Value="100"/>
<Setter Property="Background" Value="White"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ctrl:AutoCompleteListBox">
<ScrollViewer x:Name="RootScrollViewer" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled" Padding="0" Background="{TemplateBinding Background}">
<toolkit:WrapPanel IsItemsHost="True">
<!--Items Bound To ItemSource Go Here-->
<TextBox x:Name="txtInput"/>
</toolkit:WrapPanel>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я не знаю, как выразить то, что я хочу. Я знаю, что вы можете использовать «ItemsPresenter» в шаблоне элемента управления, который показывает связанные элементы, но тогда как я могу добавить свое текстовое поле в ту же панель, что и связанные элементы?
Буду очень признателен за любую помощь. Это правильный способ даже пойти на это? Большое спасибо.