Blend 2015 教程 (一) 基础

微软公司在Visual Studio 2015产品套件中作出了许多革命性的变更,包括.NET开源,.NET服务器端部分跨平台,推出向个人和小团队免费的社区版,移动应用开发部分跨平台支持,商店应用支持C#编译成本地代码等。

另一个很重大的改进就是Blend使用Visual Studio框架重新制作,以使得XAML和C#代码的编辑能力达到了Visual Studio的水平。由于对XAML的解析使用独立的进程进行,稳定性得到了极大的提高。下文就对这个重新制作的Blend进行一些初步研究。

首先通过菜单 文件-新建-项目 打开如下对话框,创建一个新的WPF项目。

这时发现用户界面已经改为Visual Studio的模式,解决方案资源管理器和团队资源管理器面板和Visual Studio的一模一样,也就意味着对项目文件和类库的管理能力和对源代码管理的支持能力达到了VS的程度,这点是非常值得让人高兴的。界面菜单项的安排,错误列表面板,输出面板,查找结果面板也都和VS一样,查找和替换功能的使用也和VS一致。

原来的属性编辑功能使用属性面板实现,原来的对象浏览器功能使用增强版的文档大纲面板实现。资产面板,状态面板,触发器面板,数据面板和资源面板和原有版本保持一致。

原有的美工板部分现在使用VS框架中核心的文档编辑功能实现,打开一个XAML文件,使用和VS相似的界面展现,左侧增加了Blend的工具栏,如下图。

可视化编辑能力达到了原有Blend的水平,代码编写能力又达到了VS的水平,可谓是VS和Blend的完美结合。C#的开发也和VS保持一致,包括智能感知,查找引用等特性的支持,但目前不支持Resharper(Visual Studio 2015可以支持Resharper9)。以后做View层开发的人员可以只用Blend一个工具了,不用像以前一样同时开VS和Blend了,还得进行代码同步。

下面通过一个简单的小例子尝试通过可视化开发的方法完成添加控件,修改布局,样式抽取,创建样例数据,数据模板编辑,数据绑定等工作,以对新Blend的使用进行探究。

1. 首先在美工板中移动鼠标,看到出现如下图黄色的线单击,使Grid添加一行。

再把鼠标移到如下图位置,美工板中出现39*图示,点击星号,可在各种模式之间切换,先暂时改为39锁。

目前代码如下

<Window x :Class="BlendDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local ="clr-namespace:BlendDemo"
        mc:Ignorable ="d"
        Title="MainWindow" Height ="350" Width="525">
    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height ="39"/>
            <RowDefinition/>
        </Grid.RowDefinitions>

    </Grid >
</Window>

2. 按快捷键T或在左侧工具栏中选择TextBlock工具,在Grid的第一行中绘制一个文本块,按Escape键取消编辑状态,按Ctrl+Shift+R组合键,或通过菜单 格式-布局-重置全部命令,重置全部布局参数。在选中文本块控件的条件下,在属性面板中点击Text属性右侧的黑色方块,选中重置,以重置该属性。点击文本组属性下方的下拉按钮展开更多属性,用同样的方法把TextWrapping属性也重置为默认值。

下面说明一下小方块的各种颜色的含义,

黑色表示本地值,即通过XAML标签属性直接设置的值。

绿色表示引用资源,静态或动态的资源。

黄色表示绑定,普通绑定或模板绑定。

紫色表示继承的值。

蓝色表示通过样式获取的值。

应该记住这些颜色的含义,以便观察属性面板时一目了然。

在Text属性中输入“人员列表”,修改文本组中的字体和字号为SimHei和22px,如果字号的单位是pt,可以在菜单 工具-选项-XAML设计器-类型单位 中改为像素,以和XAML代码中保持一致。设置Margin为10,10,10,10。

按前述所示把Grid的第一行改为Auto(点击锁变为Auto)。

此时代码如下

<Window x :Class="BlendDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local ="clr-namespace:BlendDemo"
        mc:Ignorable ="d"
        Title="MainWindow" Height ="350" Width="525">
    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height ="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <TextBlock FontFamily ="SimHei" Text="人员列表" FontSize="22" Margin ="10"/>

    </Grid >
</Window>

3. 在文档大纲面板中选择TextBlock控件后,右键点击,在弹出的菜单中选择 编辑样式-创建空样式,在弹出的窗口中点击确定按钮,以创建样式。

可以看到此时美工板顶部的导航栏中出现了一个调色板一样的图示,表示现在正在编辑样式。

此时在属性面板中,在文本组中,点击字体和字号右侧的小方块,选择转换为本地值,可以看到这时字体和字号就被抽取到样式里了,代码如下。

<Window x :Class="BlendDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local ="clr-namespace:BlendDemo"
        mc:Ignorable ="d"
        Title="MainWindow" Height ="350" Width="525">
    <Window.Resources >
        <Style x :Key="TextBlockStyle1" TargetType="{x :Type TextBlock }">
            <Setter Property ="FontFamily" Value="SimHei"/>
            <Setter Property ="FontSize" Value="22"/>
        </Style>
    </Window.Resources >
    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height ="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <TextBlock Text ="人员列表" Margin="10" Style ="{DynamicResource TextBlockStyle1}"/>

    </Grid >
</Window>

4. 点击文档大纲面板顶部的返回上一级按钮(横线加向上箭头),退出样式编辑模式。在资产面板中选择ListBox控件,在美工板中的Grid的第二行的位置上拖动出一个ListBox控件,按Ctrl+Shift+R重置布局。

5. 在数据面板中添加样例数据。首先选择项目或此文档,此处选择项目,这样可以做到多个文件共享数据。点击面板右上方的创建示例数据按钮,选择新建示例数据,在弹出的对话框中输入数据源名称,勾选在应用程序运行时启用示例数据选项,点击确定。

把Collection,Property1和Property2改为Persons,Name和Sex,可以尝试加入其他类型的属性,包括简单属性和集合属性等。

6. 点击数据面板下方的设置设计时数据上下文按钮,弹出如下对话框。

选择DesignData,点击确定按钮。

可以看到代码中加入了d:DataContext。

<Window x :Class="BlendDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local ="clr-namespace:BlendDemo"
        mc:Ignorable ="d"
        Title="MainWindow" Height ="350" Width="525" d:DataContext ="{d: DesignData /SampleData/SampleDataSource /SampleDataSource.xaml}">

也就是说设计时数据并没有占用正常的DataContext属性,以后ViewModel层开发人员可以正常使用。

7. 在美工板或文档大纲面板中选中ListBox控件,在属性面板中点击ItemsSource属性右侧的小方块,在弹出的菜单中选择创建数据绑定。在弹出的对话框中选择Persons,点击确定按钮。

8. 在美工板或文档大纲面板中选中ListBox控件,在美工板顶部导航栏中,点击ListBox,在弹出的菜单中选择 编辑其他模板-编辑生成的项-创建空白项,输入名称,点击确定。此时进入ItemTemplate编辑模式,美工板导航栏如下图。

点击美工板左侧栏中的Grid按钮,在美工板中绘制一个Grid布局,使用前文所述的方法把Grid分成两列,在第一列中绘制一个文本块,第二列中绘制一个CheckBox,使用快捷键重置文本块和CheckBox的布局(Ctrl+Shift+R)。把Grid的第一列改为*,第二列改为Auto,并清除Width和Height(在文档大纲面板中选择Grid布局,在属性面板中,点击Width和Height的小方块,选择重置)。这时文本块和CheckBox并没有拉伸开,如下图。

点击美工板导航栏中的ListBox按钮,在属性面板中把HorizontalContentAlignment改为Stretch,这样就变成了如下图所示。

9. 点击美工板导航栏中的Grid按钮,重新进入ItemTemplate编辑状态。选择TextBlock控件,在属性面板中点击Text属性的小方块,选择创建数据绑定,在弹出的对话框中选择Name属性,点击确定,如下图。

选择CheckBox控件,在属性面板中把Content改为男。点击IsChecked属性的小方块,选择创建数据绑定,在弹出的对话框中选择Sex属性,点击确定。

至此View层的基本开发工作已经初步完成了,最终效果如下图。

设计时视图已经显示了设计效果,而运行程序ListBox中并不显示任何内容,示例数据不影响正常业务逻辑,View和ViewModel层独立开发(可能分为前端和后端开发人员),绑定属性名和类型是两者的接口,这正是我们要的效果。

如果查看数据面板为示例数据生成的代码,如SampleDataSource.xaml.cs,可以发现有条件编译语句存在,如

#if DISABLE_SAMPLE_DATA

            internal class SampleDataSource { }

#else

正如注释所说“若要在生产(环境)应用程序中显著减小示例数据涉及面,则可以设置DISABLE_SAMPLE_DATA 条件编译常量并在运行时禁用示例数据”。

最终的代码如下,

<Window x :Class="BlendDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d ="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc ="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local ="clr-namespace:BlendDemo"
        mc:Ignorable ="d"
        Title="MainWindow" Height ="350" Width="525" d:DataContext ="{d: DesignData /SampleData/SampleDataSource /SampleDataSource.xaml}">
    <Window.Resources >
        <Style x :Key="TextBlockStyle1" TargetType="{x :Type TextBlock }">
            <Setter Property ="FontFamily" Value="SimHei"/>
            <Setter Property ="FontSize" Value="22"/>
        </Style>
        <DataTemplate x :Key="DataTemplate1">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width ="*"/>
                    <ColumnDefinition Width ="Auto"/>
                </Grid.ColumnDefinitions>
                <TextBlock Height ="Auto" TextWrapping="Wrap" Text="{Binding Name}" Width="Auto"/>
                <CheckBox Content ="男" Grid.Column="1" Height="Auto" Width ="Auto" IsChecked="{Binding Sex }"/>
            </Grid>
        </DataTemplate>
    </Window.Resources >
    <Grid >
        <Grid.RowDefinitions>
            <RowDefinition Height ="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <TextBlock Text ="人员列表" Margin="10" Style ="{DynamicResource TextBlockStyle1}"/>
        <ListBox Grid.Row ="1" ItemsSource="{ Binding Persons}" ItemTemplate="{DynamicResource DataTemplate1 }" HorizontalContentAlignment="Stretch"/>

    </Grid >
</Window>

我们没有直接编写任何代码,全部可视化开发,由Blend生成代码。

下一篇讲述细节样式修改,敬请关注。

时间: 2024-10-26 16:45:47

Blend 2015 教程 (一) 基础的相关文章

Blend 2015 教程 (四)控件模板

前一篇讲述了修改ListBox样式的方法,本篇将修改性别显示区域的样式. 1. 选择ListBox控件,编辑ItemTemplate的当前项,选择CheckBox控件,在美工板导航栏中点击CheckBox,选择 编辑模板-创建空白项,进入控件模板编辑模式. 2. 选择文档大纲面板中的Grid,在属性面板中把Width改为30. 3. 在Grid中绘制一个TextBlock并重置布局,将Text属性改为男,HorizontalAlignment属性为居中对齐. 4. 在状态面板中点击Checked

Blend 2015 教程 (二) 样式

前一篇讲述了如何在新Blend中完成一个简单的带数据绑定的界面小例子,本篇将讲述一下,把View层和Style层分开,并搭建Style层框架的方法,并进行细节样式修改. 1. 在解决方案资源管理器面板的项目结构树中的项目项(标有图标C#)上右键点击,选择 添加-新建文件夹,起名为Styles.在刚添加的Styles文件夹上右键点击,选择 添加-资源字典,起名为CoreStyle.xaml,点击确定.再添加一个,起名为BaseStyle.xaml. 2. 打开MainWindow.xaml,选择人

Blend 2015 教程 (五) 自定义状态

本篇再补充一块内容,就是自定义状态的介绍. 自定义状态用于封装用户控件在各种状态之间切换时的外观变化及其动画效果,方便调用.比如有个用户控件用于实现类似舞台幕布打开和关闭切换的效果,可以创建幕布关闭和幕布打开两个状态并编辑界面及动画,然后调用状态切换,就可以方便地实现幕布打开和关闭效果.下面看演示. 1. 首先创建一个用户控件命名为CurtainControl,打开该用户控件的xaml进行编辑. 2. 在状态面板中,点击添加状态组按钮,将新添加的状态组命名为CurtainControlState

Blend 2015 教程 (三) 模板

前一篇讲述了一些基本样式的修改方法,并搭建了Style层的基本框架,本篇将进一步修改ListBox的样式. 1. 首先选中ListBox控件,在美工板导航栏中点击ListBox,选择 编辑其他模板-编辑项的布局-编辑副本,起名为PeopleListItemsPanelTemplate,选择该文档选项,点击确定,进入项布局编辑模式. 此时,美工板导航栏变为 2. 在文档大纲面板中选择VirtualizingStackPanel,右键点击,选择 更改布局类型-WrapPanel,点击返回上一层,退出

《2015最新Android基础入门教程》完结散花~

<2015最新Android基础入门教程>完结散花~ 标签(空格分隔): 反思小结 引言: 从六月底就开始编写这套教程,历时将近五个多月,今天终于写完了,全套教程正文部分148篇, 十大章,从基本UI控件到四大组件,Intent,Fragment,事件处理,数据存储,网络编程,绘图与动画, 多媒体,系统服务等都进行了详细的讲解!代码都是都是在Android Studio上进行编写的,全文 采用Markdown,行文结构清晰,还结合了实际开发中一些常见的问题进行了剖析-由于个人能力的局限, 虽然

Nmap扫描教程之基础扫描详解

Nmap扫描教程之基础扫描详解 Nmap扫描基础扫描 当用户对Nmap工具了解后,即可使用该工具实施扫描.通过上一章的介绍,用户可知Nmap工具可以分别对主机.端口.版本.操作系统等实施扫描.但是,在实施这些扫描工作之前,需要先简单了解下Nmap工具的使用,以方便后面实施扫描.所以,本章将通过使用Nmap工具实施基础的扫描,来帮助用户了解该工具. Nmap扫描扫描概述 在实施基本的扫描之前,需要先了解一些Nmap网络扫描的基本知识,及需要考虑的一些法律边界问题.本节将对网络基本扫描进行一个简单介

IOS 教程以及基础知识

http://wenku.baidu.com/course/view/1ce3571252d380eb62946d8c http://iphone.apkbus.com/ www.itcast.cn //博客 http://blog.csdn.net/cutesource/article/details/7715593 // ios虚拟开发环境搭建 http://www.cnblogs.com/mjios/ //ios 博客 http://www.9ria.com/subject/summary

adminLTE 教程 -0 基础布局

基础布局. 1.meta没的说 2.引入bootstrap 3.引入字体库,肯定用得到,下载到本地放在plugins下也可以 4.adminLTE子什么的文件肯定需要 5.皮肤skin,可以引入_all...,但是如果只需要一个皮肤的话,比如只需要蓝色,直接引入skin-blue就行,毕竟越简越好 6.兼容IE8的两个js文件 7.jquery没的说 8.fastclick,触摸设备快速点击体验,不想兼容手机可以去掉 9.slimscroll,菜单和页面中的滚动条样式,放上去毕竟好看嘛.(看一下

程序设计C语言二级考试教程 Java基础视频教程 安卓软件开发教程 Unity3D游戏制作入门教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut