Metro中两种自定义样式的弹出对话框(三种覆盖措施卡塔尔

mylist->filter(filterexpr)->map(mapexpr)->sort()->join()

原标题:Vim 8.2 发布 带来弹出窗口与文本属性两大新功能
来源:开源中国距推出 Vim 8.1 已过去一年多,Vim 8.2
也终于在近日发布了。除了修复错误、更新文档和改进测试覆盖率等常规更新外,此版本还带来了一些有趣的新功能。Vim
开发团队的成员表示,在去年的 VimConf 2018 做主题演讲之前,他向 Vim
插件开发者询问了他们对 Vim 的功能需求。其中“弹出窗口(Popup
Windows)”和“文本属性(Text
Properties)”这两项呼声最大。经过一年多的开发,这两个新功能已顺利实现。先简单介绍一下“弹出窗口”,这是
Vim 8.2 新引入的概念,此功能的正式名称为”Popup
Windows”,用于在正在编辑的窗口的最前方显示文本(消息框、函数原型、代码片段以及其他信息),而且显示的位置也非常灵活:它们可以相对于文本定位在绝对位置或仅在屏幕中间。窗口的大小可以修改,并调整以适应文本。设置”zindex”值就能指定
popup window 在其他窗口前面。另一项同样重要的新功能是“文本属性(Text
Properties)”,用于处理语法高亮显示等特性,而不是使用基于模式的高亮显示。▲
新功能使用截图,图片来自Linux公社为了介绍 Popup Windows 和 Text
Properties 这两个新功能,Vim 团队的开发者还写了一个小游戏
Killersheep(已开源)来进行展示。其他值得关注的新功能: “const”命令,用于声明一个不能改变的变量:constTIMER_DELAY = 400用于方法调用的函数链mylist->filter(filterexpr)->map(mapexpr)->sort()->join()通过指派
Heredoc 样式,可以轻松地将行列表指派给变量,而无需引用或 line
continuation:letlines =<< trim ENDlineonelinetwoEND为 Windows 10
添加了 ConPTY
支持,可以在控制台中显示全彩色详细更新内容请查看 

      public static void
ShowRelativeToAppBar(Popup popup,
Page page, AppBar appbar, Button button)
        {
            Func<UIElement, UIElement, Point> getOffset = delegate(UIElement control1, UIElement control2)
            {
                return
control1.TransformToVisual(control2).TransformPoint(new Point(0, 0));
            };
            Point popupOffset = getOffset(popup, page);  //获得popup控件在当前页面中的位置
            Point buttonOffset = getOffset(button, page); //获得butto控件在当前页面中的位置
            Point appbarOffset = getOffset(appbar,page); //获得appbar控件在当前页面中的位置
            //设置应用程序窗口的左边缘与弹出项的左边缘之间的距离
            popup.HorizontalOffset = buttonOffset.X – popupOffset.X –
(popup.ActualWidth / 2) + (button.ActualWidth / 2);//弹出层的中心在button的正上方
            //置应用程序窗口的上边缘与弹出项的上边缘之间的距离。
            popup.VerticalOffset = appbarOffset.Y – popupOffset.Y –
popup.ActualHeight;
        }

市面上用于开发工作的编辑器非常多,笔者会经常因为不同的编程语言该如何选择好用的编辑器而感到纠结。而在随后从事
React Native
开发工作过程中,对相应的编辑器做了一些探索和研究,本文总结了一些非常适合移动应用开发的编辑器和
IDE。1. Nuclide 官网: Github 项目地址:facebook / nuclide() 文档:
设置: Nuclide with React Native: 支持平台:Windows、Mac、Linux
Licence:开源 特性: 内置调试 远程开发 Developing Hack 支持 Mercurial
工作集Nuclide 是基于 Atom
之上构建的单独的一个包,其提供可编程性且社区非常活跃。它为 React
Native、Hack 和 Flow 项目提供一流的开发环境。2. Atom 官网: Github
项目地址:atom() 文档: 设置: Atom with React Native:
支持平台:Windows、Mac、Linux Licence:开源 特性: 跨平台编辑
内置包管理器 智能自动补全 文件系统浏览器 多个窗格 查找和替换Atom
是一款现代化、易用、可控的文本编辑器。Atom
被开发人员广泛应用于多种编程语言。它有一个庞大而活跃的社区,诞生了很多有用的插件。Atom
常用的包:
atom-react-native-autocomplete package – 该包针对
React-Native,为 Atom 编辑器提供自动补全功能。 atom-react-native-css –
这是一个内置支持 SASS、SCSS 的 React-Native 组件的包。React-native-css
将有效的 CSS、SASS转换为 CSS 的 Facebook 子集。 react-native-snippets –
该包是 Atom和 Nuclide 的 React Native 片段。 zenchat-snippets –
它是react-native、redux 和 ES6 的片段集合。 atom-xcode – 用于集成 Mac
Xcode 和 atom。安装之后,iOS 模拟器可以在 atom 内进行控制。
language-babel – 包含所有 JavaScript 版本的语法,包括 ES2016 和
ESNext、用于 Facebook React 的 JSX 语法、以及 Atom 的 etch。3. Sublime
Text
官网: Github 项目地址:SublimeText() 文档: 设置: SublimeText
for React Native: 为 React-JSX 开发设置 SublimeText:()
支持平台:Windows、Mac、Linux
Licence:可以免费下载和试用,继续使用需购买 License。 特性: Goto
Anything 功能 多个选择 命令终端 分心自由模式 拆分编辑 即时项目开关 插件
API 可自定义任何东西 跨平台 设置 React
Native:nitinh.com/2015/02/setting-sublime-text-react-jsx-development/Sublime
Text
是一个复杂的文本编辑器,可用于编写代码、做标记和编写普通文本。社区提供了大量的插件扩展其功能。Sublime
Text 一直是开发人员最喜欢的编辑器。Sublime Text 常用包
react-native-snippets – 用于 react native 的 Sublime Text 的片段集合
babel-sublime – 具有 React JSX 扩展的 ES6 JavaScript 的语法定义。4.
Visual Studio Code
官网: Github 项目地址:Microsoft/vscode() 文档:
设置: 使用 Visual Studio Code 开发 React Native 应用:
支持平台:Windows、Mac、Linux 特性: 内置 Git 命令
可扩展并且可定制Visual Studio Code 是由 Microsoft 为 Windows、Linux 和
OS X 开发的源代码编辑器。它是免费和开源的,支持调试、嵌入式 Git
控件、语法高亮、智能代码补全、代码段和代码重构。扩展 ReactNative
Tools – 此扩展为React Native
项目提供了开发环境。你可以调试代码,从命令终端快速运行 react-native
命令,并使用 IntelliSense 浏览 React Native API 的对象、函数和参数。
Vim编辑器5. Vim 编辑器 官网: Github 项目地址:vim/vim() 文档: Vim
文档: 为 React-JSX 设置 Vim:[url=””][/url] License:开源
支持平台:Mac、Linux 特性: 持久、多层次的撤销树 广泛的插件系统
支持数百种编程语言和文件格式 强大的搜索和替换功能 能够与许多工具集成Vim
是一种高度可配置的文本编辑器,可以非常高效地创建和更改任何类型的文本。大多数
UNIX 系统都以 “vi” 的形式支持它。许多开发人员喜欢使用 Vim
进行各种编辑工作。Vim 非常稳定,并且在不断发展而变得更好。Vim 插件
vim-jsx – 提供 JSX 的语法高亮和缩进。 vim-react-snippets – 一组为 Vim
打造的可与Facebook 的 React 库一起使用的片段。 vim-babel – 一组为 Vim
打造的可与Facebook 的 React 库一起使用的片段。6. GNU Emacs 编辑器
官网: 文档: 官方文档: 针对 React Native 的初始设置: License:遵循
GPL 支持平台:Windows、Mac、Linux 特性:
内容感知编辑模式,包括语法着色,适用于多种文件类型。
完整的内置文档,包括新手教程。 支持几乎所有脚本语言的 Unicode 编码。
高度可定制,使用 Emacs Lisp 代码或图形界面。
具有用于下载和安装扩展的包系统。GNU EMACS
是一个可扩展、可定制、免费、自由的文本编辑器。扩展 web-mode.el –
它是一个自主的 emacs 主模块,用于编辑 Web模板。它与许多语言兼容,包括
JSX。7. Spacemacs 编辑器 官网: Github
项目地址:syl20bnr/spacemacs() 文档: 官方文档: License:开源
支持平台:Windows、Mac、Linux 特性: 密钥绑定使用助记符前缀进行组织
可发现 – 创新的实时显示可用的键绑定。 相似的功能具有与之相同的密钥
简单的查询系统可以快速找到可用的层、包等。
社区驱动的配置提供了强大的用户可调的包,bug 可被快速修复。Spacemacs
是一个社区驱动的 Emacs 发行版 – 最好的编辑器既不是 Emacs 也不是Vim,它是
Emacs 和 Vim 相结合!扩展 React layer – 适用于 React 的 ES6 和 JSX
配置层。它将自动识别 .jsx 和 .react.js 文件。一个用于
React集成的包层。8. Deco IDE 官网: Github
项目地址:decosoftware/deco-ide() 文档: 官方文档: 支持平台:Mac
License:开源 特性: 组件搜索和插入 实时调整 新文件支架Deco 是专为 React
Native 打造的 IDE。它是一个用于编写 React Native
应用程序的一体化解决方案,无需任何环境设置即可下载和使用。Deco
专注于组件重用,并支持用户对 UI 的实时编辑,从而改进了React Native
开发工作流程。9. WebStorm 官网: 文档: 官方文档: 使用外部工具:
License:收费 支持平台:Windows、Mac、Linux 特性: 智能编码协助
支持最新技术 版本控制系统 无缝工具集成 调试、跟踪和测试 内置终端WebStorm
建立在开源 IntelliJ 平台之上,JetBrains 已经开发和完善了15多年。它提供与
VSC、本地历史功能的紧密集成,具有充满活力的插件生态系统,是完全可配置的,还提供大量其他的功能。WebStorm
为 React 和 JSX 提供高级支持,并提供 React Native
应用程序的核心编码协助。10. TextMate 编辑器 官网: 文档: 官方文档:
License:收费 支持平台:Mac 特性: CSS 选择器可确定操作和设置的范围
快速概述和导航功能弹出 可以把你最喜欢的脚本语言作为插件集成 从文档中运行
Shell 命令 代码高亮 可与 Xcode 协作并构建 Xcode 项目TextMate 并不是
IDE,但是通过使用其强大的片段、宏和独特的范围界定系统,它通常可以提供即使是编程语言特定的
IDE 都缺乏的功能。React
不直接支持,但是借助下面的插件可以很容易地获得对大多数 React
代码所基于的 JSX 的支持。插件 javascript-jsx.tmbundle – 用于JSX的
Textmate
Bundle。目前支持语法高亮。总结所有代码编辑器都具有丰富而强大的功能。且其中的插件和扩展都可以适应
React Native 环境,因此在迁移到 React-Native
时,我们不必迁移到不同的代码编辑器。引用原文:Top 10 Editors For React
Native Mobile App Development作者:Murtaza Basrai翻译:安翔

为了介绍 Popup Windows 和 Text Properties 这两个新功能,Vim
团队的开发者还写了一个小游戏
Killersheep(已开源) 来进行展示。

  2)自定义需要显示的弹出层UI,添加新建项,然后选择添加一个用户控件,自定义UI界面显示的内容,如下:

永利官网ylg客户端 1

  • 用于方法调用的函数链

  【C#】

    public sealed partial class VersionInformation : UserControl
    {
        public VersionInformation()
        {
            this.InitializeComponent();
        }

先简单介绍一下“弹出窗口”,这是 Vim 8.2
新引入的概念,此功能的正式名称为”Popup
Windows”,用于在正在编辑的窗口的最前方显示文本(消息框、函数原型、代码片段以及其他信息),而且显示的位置也非常灵活:它们可以相对于文本定位在绝对位置或仅在屏幕中间。窗口的大小可以修改,并调整以适应文本。设置”zindex”值就能指定
popup window 在其他窗口前面。

 

永利官网ylg客户端 2

 

(文/开源中国)    

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

  • 通过指派 Heredoc 样式,可以轻松地将行列表指派给变量,而无需引用或
    line continuation:

        private void Ok_Click(object sender, RoutedEventArgs e)
        {
            PopPanel.IsOpen = false;  //点击弹出层的确定按钮后,弹出层会隐藏
        }
    }

letlines =<< trim ENDlineonelinetwoEND

永利官网ylg客户端 3

其他值得关注的新功能:

  2)、除了内容不同,弹出层的大小位置以及背景都是一个样的。


新功能使用截图,图片来自永利官网ylg客户端,Linux公社

        private void VersionButton_Click(object sender, RoutedEventArgs
e)
        {
            if (pc == null)
            {
                pc=new VersionInformation();
            }
            pc.Show(this,bottomAppBar,VersionButton);

永利官网ylg客户端 4

为了方便控制PopControl,在用户控件中声明一个PopControl,在用户控件类的构造函数中传递。

constTIMER_DELAY = 400

        /// <summary>
        /// 显示弹出层
        /// </summary>
        public virtual void ShowPop()
        {
            if (this.m_pop != null)
            {
                this.m_pop.IsOpen = true;
            }
        }
        /// <summary>
        /// 隐藏弹出层
        /// </summary>
        public virtual void HidePop()
        {
            if (this.m_pop != null)
            {
                this.m_pop.IsOpen = false;
            }
        }
    }
}

其中“弹出窗口(Popup
Windows)”和“文本属性(Text
Properties)”这两项呼声最大。经过一年多的开发,这两个新功能已顺利实现。

 【XAML】

永利官网ylg客户端 5

 

  •  “const”命令,用于声明一个不能改变的变量:

 

namespace App1
{
    public sealed partial class ucReg : UserControl
    {
        PopControl _pc;
        public ucReg(PopControl c)
        {
            this.InitializeComponent();
            _pc = c;
        }

  • 为 Windows 10 添加了 ConPTY 支持,可以在控制台中显示全彩色

   VersionInformation pc;

详细更新内容请查看 

注意:上面红色代码,该代码的作用时,当用户点击Popup控件以外的区域时,Popup控件会自动隐藏。

  1)、有一个半透明的层覆盖在现有UI上,这里我介绍两种覆盖方式,一种是完全覆盖,以阻止用户操作弹出对话框下的UI元素;另一种是部分覆盖,当用户点击其他UI控件时,弹出层就隐藏了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注