UWP - Как создать элемент управления TokenAutoComplete

Я занимаюсь разработкой приложения UWP (Win10 - VS2015). Мне нужен токен TextBox в платформе Windows. Любая идея, пожалуйста, как запустить и создать этот элемент управления, затем при написании текста внутри текстового поля и поставить пробел или просто нажмите этот текст, он должен преобразовать в выбранный токен. Смотрите рис (это просто для идеи). Мне нужен такой тип контроля.

Вы также можете получить представление из этого сообщения TokenAutoComplete

введите описание изображения здесь

1 ответ

Решение

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

Я использовал RichTextBlock и Textbox. Если вы поместите эти два элемента управления в WrapPanel внутри Gridview. Вы могли бы получить такой же контроль, какой хотели, но я не пробовал.

 <RichTextBlock x:Name="tokenblock">
                <Paragraph>

                </Paragraph>

            </RichTextBlock>
            <TextBox  TextChanged="TextBox_TextChanged"/>

Код позади так

 private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            string text = (sender as TextBox).Text;
            if (text.Contains(';'))
            {
                Paragraph para;
                text = text.Substring(0, text.LastIndexOf(';'));
                if (tokenblock.Blocks.Count > 0)
                  para  = tokenblock.Blocks[0] as Paragraph;
                else
                 para = new Paragraph();
                InlineUIContainer inline = new InlineUIContainer();
                Border br = new Border();
                br.Background = new SolidColorBrush(Colors.Gray);
                br.CornerRadius = new CornerRadius(10);
                TextBlock tb = new TextBlock();
                br.MinWidth = 70;
                br.MaxWidth = 150;
                tb.Text = text;
                tb.TextWrapping = TextWrapping.Wrap;
                tb.Margin =new Thickness(10, 10, 10, 10);
                br.Child = tb;
                inline.Child = br;
                para.Inlines.Add(inline);
                (sender as TextBox).Text = "";
            }

// ниже кодов я не пробовал

   <GridView x:Name="myGridView" IsItemClickEnabled="True">
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="5"/>
            </ItemsPanelTemplate>
        </GridView.ItemsPanel>
//here  you have to put RichTextBlock and textbox as two gridview items 
Другие вопросы по тегам