本文主要翻译: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/
我们需要给用户很多标签,我们需要使用一个控件,他的长度是变化,可以快速放,这样好像wrapPancel就是我们需要,因为这个我直接写如果看起来不懂,可以看
我们点添加就会添加标签,我们删除标签就很快排版。
我们使用RichBox,这个可以做我们标签
源代码因为作者写的和UWP不一样,我改UWP,放在https://github.com/lindexi/TagList
运行效果
点击按钮
删除
软件使用,先add
跳到让用户选择,这里如果让用户输入,使用有点难,可以使用用户在跳转输入,输入自动变为预设一样
源.Add(new Tag() {Id = "id",Label = "用户输入"});
选择标签,选择完成保存
可以看到首页
标签使用在跳转MainPage
if (e.NavigationMode == NavigationMode.Back)
我们把选择保存
General.GetInstance().TagSelection
在SetTags
是本算法的主要
我们搜索全部新加和被删除
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)
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
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
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
分享到:
相关推荐
【标签】中的"uwp"代表Universal Windows Platform,这是一个面向Windows 10的应用程序开发平台,提供了一组API,使得开发者能够构建可在所有Windows 10设备上运行的应用。"源码"指的是项目的原始编程代码,对于学习...
借助 Windows Explorer 上的这种现代 UWP,以更有效,更令人满意的方式管理文件 我们认为我们大多数人都可以同意 Windows 10 是迄今为止 Microsoft 操作系统的最佳版本,尽管它具有各种可感知的或多或少的主观缺点...
标题"BleScan_连接_Windows编程_ble_win10ble开发_win10ble_"涉及的核心技术是Windows 10上的蓝牙低功耗(Bluetooth Low Energy, BLE)开发,具体包括BLE设备的扫描、连接以及属性查询。这个项目是在64位Windows 10...
根据提供的链接,`win10-UWP-发送邮件`这篇文章可能详细解释了这些步骤,并给出了完整的示例代码。资源文件`Mnterchange`可能是项目中的一个模块或类,用于封装邮件发送的逻辑。 需要注意的是,实际应用中,你还...
标题中的“Win10 h265 hevc解码器 64位”指的是适用于Windows 10操作系统、64位架构的H.265/HEVC视频解码器。H.265(High Efficiency Video Coding)是新一代的视频编码标准,旨在在相同画质下提供更高效的压缩比,...
标题 "开发:Windows 10 UWP无线标签/收据打印机演示" 提供的信息表明,这是一个关于使用Windows 10通用Windows平台(UWP)应用程序接口进行无线标签和收据打印的开发教程或示例。在Windows 10中,UWP允许开发者创建...
标题中的“Microsoft.to do for win10 x64.7z”指的是微软为Windows 10 64位操作系统设计的任务管理应用Microsoft To Do的安装文件。这个压缩包包含了所有必要的组件,使得用户在无法通过微软应用商店下载时,也能...
"cpp-RadialControllerSurfaceDialwin32和UWP示例代码"这个标题表明,这是一个关于C++编程的项目,重点在于使用RadialController(也称为Surface Dial)在Windows操作系统上的应用,包括Win32应用程序和UWP(通用...
在Windows 10中,应用商店是用户下载和管理UWP(通用Windows平台)应用的重要途径。当遇到应用商店无法启动或者操作异常时,用户通常会感到困扰,因为这意味着他们无法获取新的应用程序或更新已安装的应用。微软提供...
描述中提到的“gank.io首个win10客户端,支持磁贴、通知、小娜……已发布到应用商店,欢迎下载。”意味着这款应用不仅具有常规的客户端功能,还充分利用了UWP平台的特点。它支持Windows 10的动态磁贴,可以实时展示...
"标签"中提到的"C# Win10 .NET UWP"进一步确认了我们将在C#语言环境下,使用.NET框架为Windows 10开发UWP应用。C#是一种强类型、面向对象的语言,它与.NET Framework的结合使得开发高效且易于维护的代码成为可能。 ...
基于提供的标签“C# Win10 VS2013 UWP”,我们可以推断这个教程使用的是C#编程语言,并且是在Windows 10操作系统下进行开发,使用的IDE是Visual Studio 2013。尽管VS2013较旧,但仍然可以支持UWP开发。值得注意的是...
**Windows Terminal for Win10** Windows Terminal 是微软为Windows 10操作系统推出的一款现代终端工具,它整合了多个命令行环境,如CMD、PowerShell、WSL(Windows Subsystem for Linux)等,提供了多标签、自定义...
标题中的“dotnet-菜鸟也玩IoT教你借助Win10手机制作Arduino蓝牙遥控小车”揭示了这个项目是关于初学者如何利用.NET框架,尤其是针对Windows 10平台,来构建一个通过手机蓝牙控制的Arduino小车。IoT(物联网)技术在...
这里介绍四种简单易行的方法来查看Win10应用的安装路径: 1. **借助任务管理器** - 打开任务管理器(可以通过按下`Ctrl+Shift+Esc`快捷键或右键点击任务栏并选择“任务管理器”)。 - 在“进程”或“详细信息”...
`avbuild` 是一个针对 FFmpeg 的构建工具,专门设计来简化 FFmpeg 在不同平台上的编译过程,如 iOS、Android、Raspberry Pi、Win32、UWP、Linux 和 macOS 等。 1. **跨平台编译**: - `avbuild` 提供了一种统一的...
【标签】"C#" 表明该项目是使用C#编程语言编写的。C#是一种面向对象的编程语言,广泛用于开发Windows应用程序,尤其是UWP应用。它的强类型系统、垃圾回收机制以及对.NET框架的支持使得开发高效、稳定的桌面和移动...
标签“win7 小工具”进一步强调了这个主题,表明这个压缩包文件的内容与Windows 7操作系统中的小工具有关,可能是为了帮助用户更好地管理和使用这些小工具而提供的工具或资源。 总的来说,这个压缩包文件可能包含了...
在Windows 10操作系统中,有时用户在卸载Modern应用(也称为Windows Store应用或UWP应用)后,发现它们的图标仍然保留在开始菜单或任务栏上,这可能会引起困扰。以下是一些方法,可以帮助你彻底删除这些已经卸载的...