UWP - 如何创建 TokenAutoComplete 控件
UWP - How to create a TokenAutoComplete Control
我正在开发 UWP (Win10 - VS2015) 应用程序。我需要 Windows 平台中的令牌文本框。请知道如何启动和创建此控件,然后在文本框中写入文本并输入 space 或仅点击该文本时,它应该转换为选定的令牌。看图片(仅供参考)。我需要这样的控件。
你也可以从中得到启发 Post TokenAutoComplete
我发布的代码是您可以开始构建控件的初始代码..
我使用了 RichTextBlock 和文本框。如果把这两个控件放在Gridview里面的WrapPanel中。您可能会得到您想要的类似控件,但我还没有尝试过。
<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
我正在开发 UWP (Win10 - VS2015) 应用程序。我需要 Windows 平台中的令牌文本框。请知道如何启动和创建此控件,然后在文本框中写入文本并输入 space 或仅点击该文本时,它应该转换为选定的令牌。看图片(仅供参考)。我需要这样的控件。
你也可以从中得到启发 Post TokenAutoComplete
我发布的代码是您可以开始构建控件的初始代码..
我使用了 RichTextBlock 和文本框。如果把这两个控件放在Gridview里面的WrapPanel中。您可能会得到您想要的类似控件,但我还没有尝试过。
<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