# win 10 UWP 标签
本文主要翻译:[http://visuallylocated.com/post/2015/02/20/Creating-a-WrapPanel-for-your-Windows-Runtime-apps.aspx](http://visuallylocated.com/post/2015/02/20/Creating-a-WrapPanel-for-your-Windows-Runtime-apps.aspx) [http://depblog.weblogs.us/2015/02/18/how-to-add-a-tag-list-into-winrt-universal-apps/](http://depblog.weblogs.us/2015/02/18/how-to-add-a-tag-list-into-winrt-universal-apps/)
我们需要给用户很多标签,我们需要使用一个控件,他的长度是变化,可以快速放,这样好像wrapPancel就是我们需要,因为这个我直接写如果看起来不懂,可以看
<!--more-->
<div id="toc"></div>
![这里写图片描述](http://img.blog.csdn.net/20160428154345998)
我们点添加就会添加标签,我们删除标签就很快排版。
我们使用RichBox,这个可以做我们标签
源代码因为作者写的和UWP不一样,我改UWP,放在https://github.com/lindexi/TagList
运行效果
![这里写图片描述](http://img.blog.csdn.net/20160429102218298)
点击按钮
![这里写图片描述](http://img.blog.csdn.net/20160429102248655)
删除
![这里写图片描述](http://img.blog.csdn.net/20160429102311111)
软件使用,先add
![这里写图片描述](http://img.blog.csdn.net/20160429102913148)
跳到让用户选择,这里如果让用户输入,使用有点难,可以使用用户在跳转输入,输入自动变为预设一样
```csharp
源.Add(new Tag() {Id = "id",Label = "用户输入"});
```
![这里写图片描述](http://img.blog.csdn.net/20160429103328037)
选择标签,选择完成保存
![这里写图片描述](http://img.blog.csdn.net/20160429103355334)
![这里写图片描述](http://img.blog.csdn.net/20160429103411522)
可以看到首页
![这里写图片描述](http://img.blog.csdn.net/20160429103435514)
标签使用在跳转MainPage
```csharp
if (e.NavigationMode == NavigationMode.Back)
```
我们把选择保存
```csharp
General.GetInstance().TagSelection
```
在`SetTags`是本算法的主要
我们搜索全部新加和被删除
```csharp
var tagParagraph = (Paragraph) (from paragraph in TagRichTextBlock.Blocks
where paragraph.Name.StartsWith("Tags")
select paragraph).FirstOrDefault();
var tagIds = from tag in General.GetInstance().TagSelection.Tags
select tag.Id;
var buttonsToRemove = from item in tagParagraph.Inlines.Cast<InlineUIContainer>()
where !tagIds.Contains(((Button) item.Child).Name)
select item;
foreach (InlineUIContainer container in buttonsToRemove)
tagParagraph.Inlines.Remove(container);
```
```csharp
IEnumerable<string> buttonIds = from item in tagParagraph.Inlines.Cast<InlineUIContainer>()
select ((Button) item.Child).Name;
IEnumerable<Tag> tagsToAdd = from item in General.GetInstance().TagSelection.Tags
where !buttonIds.Contains(item.Id)
select item;
foreach (Tag tag in tagsToAdd)
{
InlineUIContainer container = new InlineUIContainer();
RichTextBlock inlineRichTextBlock = new RichTextBlock()
{
IsTextSelectionEnabled = false
};
Paragraph inlineParagraph = new Paragraph();
inlineParagraph.Inlines.Add(new Run()
{
Text = string.Format("{0} ", tag.Label),
FontSize = 14
});
inlineParagraph.Inlines.Add(new Run()
{
Text = "\uE106",
FontFamily = new FontFamily("Segoe UI Symbol"),
FontSize = 10
});
inlineRichTextBlock.Blocks.Add(inlineParagraph);
Button tagButton = new Button()
{
Content = inlineRichTextBlock,
Style = (Style) Application.Current.Resources["TagButtonStyle"],
Name = tag.Id
};
tagButton.Click += OnTagButtonClicked;
container.Child = tagButton;
tagParagraph.Inlines.Add(container);
}
```
点击删除按钮,删除id
```csharp
string tagId = ((Button) sender).Name;
General.GetInstance()
.TagSelection.Tags.Remove(General.GetInstance().TagSelection.Tags.Single(item => item.Id.Equals(tagId)));
SetTags();
```
源码:https://github.com/Depechie/TagList
- Introduction
- 控件
- Win10 UWP Intro to controls and events
- win10 UWP Controls by function
- win10 uwp App-to-app communication 应用通信
- win10 UWP 使用MD5算法
- win10 UWP 全屏
- win10 uwp 使用油墨输入
- 三种方式设置特定设备UWP XAML view
- win10 uwp iot
- win10 uwp 活动磁贴
- win 10 UWP 标签
- Xamarin Forms 进度条控件
- win10 UWP MessageDialog 和 ContentDialog
- win10 uwp 俄罗斯方块
- win10 UWP Hmac
- win10 UWP 单元测试
- win10 uwp 判断文件存在
- win10 UWP 标题栏后退
- win10 uwp 分治法
- win10 UWP 应用设置
- win10 uwp BadgeLogo 颜色
- win10 uwp json
- win10 uwp Window.Current.Dispatcher中Current为null
- win10 uwp 无法附加到CoreCLR
- win10 uwp 自定义控件 SplitViewItem
- win10 uwp ContentDialog 点确定不关闭
- win10 uwp smms图床
- win10 uwp 从StorageFile获取文件大小
- win10 uwp 如何让WebView标识win10手机
- win10 uwp 上传Nuget
- win10 uwp 手动锁Bitlocker
- win10 uwp 圆角按钮
- win10 uwp 入门
- win10 uwp 切换主题
- win10 uwp 随着数字变化颜色控件
- win10 uwp 设置启动窗口大小 获取窗口大小
- win10 uwp 简单MasterDetail
- win10 uwp 异步进度条
- win10 uwp 访问解决方案文件
- C# 7.0
- win10 uwp InkCanvas控件数据绑定
- win10 uwp 列表模板选择器
- win10 uwp 隐藏实时可视化
- win10 uwp 读取文本ASCII错误
- Visual studio 创建项目失败vstemplate
- Visual Studio 自定义项目模板
- win10 uwp 车表盘 径向规
- win10 uwp 截图 获取屏幕显示界面保存图片
- win10 uwp 获得焦点改变
- win10 uwp 应用转后台清理内存
- win10 uwp 隐私声明
- win10 uwp 打包第三方字体到应用
- win10 uwp 九幽图床
- win10 uwp 兴趣线
- win10 uwp 右击浮出窗在点击位置
- win10 uwp 保存用户选择文件夹
- win10 uwp 打电话
- visual studio 2015 warning MSB3246
- win10 uwp 绘图 Line 控件使用
- win10 uwp 存放网络图片到本地
- win10 uwp 判断本地ip
- win10 uwp 弹起键盘不隐藏界面元素
- win10 uwp Markdown
- C# 设计模式 责任链
- win10 uwp 显示SVG
- win10 uwp 网络编程
- win10 uwp HttpClient post错误
- win10 uwp win2d
- win10 uwp 布局
- win10 uwp 初始屏幕
- win10 uwp dataGrid
- win10 uwp 魔力鬼畜
- win10 uwp如何使用DataTemplate
- win10 uwp 多语言
- win10 uwp CSDN阅读 源代码
- win10 uwp 语音
- win10 uwp 动画
- win10 uwp 颜色转换
- win10 uwp 获得Slider拖动结束的值
- Windows 10「设置」应用完整MS-Settings快捷方式汇总
- win10 uwp 用广告赚钱
- win10 uwp 快捷键
- win10 UWP MvvmLight入门
- win10 uwp 标题栏
- win10 uwp 从Type 使用构造
- win10 uwp ImageSourece 和Byte[] 相互转换
- win10 uwp 验证TextBox
- C# 使用Emit深克隆