# 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>

我們點添加就會添加標簽,我們刪除標簽就很快排版。
我們使用RichBox,這個可以做我們標簽
源代碼因為作者寫的和UWP不一樣,我改UWP,放在https://github.com/lindexi/TagList
運行效果

點擊按鈕

刪除

軟件使用,先add

跳到讓用戶選擇,這里如果讓用戶輸入,使用有點難,可以使用用戶在跳轉輸入,輸入自動變為預設一樣
```csharp
源.Add(new Tag() {Id = "id",Label = "用戶輸入"});
```

選擇標簽,選擇完成保存


可以看到首頁

標簽使用在跳轉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深克隆