带来弹出窗口与文本属性两大新功能,Metro中两种自定义样式的弹出对话框

详细更新内容请查看 

原标题: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
支持,可以在控制台中显示全彩色详细更新内容请查看 

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

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

图片 1

图片 2

图片 3

  • 用于方法调用的函数链

让后你会看到下面这个。

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

        /// <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;
            }
        }
    }
}

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

图片 4

constTIMER_DELAY = 400

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

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

对于每个弹出层,无论其内容是什么,都有以下共同特点:

图片 5

 

其他值得关注的新功能:

  好了,现在可以运行,效果就像下图所示,还不错吧。

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

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

(文/开源中国)    

   VersionInformation pc;

 

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

把控件的大小设置和当前窗口的大小相等,这样确保弹出层可以完全覆盖在UI上。接着把当前控件作为Popup控件的Child元素,而控件的显示与隐藏,其实就是设置Popup的IsOpen属性。为了方便派生类扩展,ShowPop和HidePop方法都用了virtual关键字。

图片 6

 

另一项同样重要的新功能是“文本属性(Text
Properties)”,用于处理语法高亮显示等特性,而不是使用基于模式的高亮显示。

2)、在“解决方案资源管理器”上右击,从菜单中选择“添加”-“新建项”。

    <Grid Background=”{StaticResource ApplicationPageBackgroundThemeBrush}”>
        <Button Content=”弹出对话框” Click=”onPop”/>
    </Grid>
</Page>


新功能使用截图,图片来自Linux公社

  5)、最后,我们在MainPage.xaml中测试这个弹出框。

letlines =<< trim ENDlineonelinetwoEND

 

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

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

  【C#】

 注意:上面代码中的 PopControl 继承的是
ContentControl类,而不是 Control,需要修改成继承 ContentControl

 

 

  这样的话,我们不妨自己来写一个控件,这个控件具有内容模型,这样,在弹出框中需要什么内容,我们只需设置其Content就行了。

  注意:Popup显示的位置可以根据自己项目的需要,进行定位,不一定用上面设置边距的方法