X--名称空间详解

转自:http://blog.csdn.net/lisenyang/article/details/18312039

X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的、用来引导XAML代码将XAML代码编译为CLR代码。

4.1X名称空间里面到底都有些什么?

x名称空间映射的是:http://schemas.microsoft.com/winfx/2006/xaml,望文生义,它包含的类均与解析XAML语言相关,所以亦称之为“XAML名称空间”。

与C#语言一样,XAML也有自己的编译器。XAML语言被解析并编译,最终形成微软中间语言保存在程序集中。在解析和编译XAML的过程中,我们经常要告诉编译器一些重要的信息,如XAML编译的结果应该和哪个C#代码编译的结果合并、使用XAML声明的元素是public还是private访问级别等等。这些让程序员能够与XAML编译器沟通的工具就存在X:名称空间中。

我们注意到,它分为Attribute、标签扩展、XAML指令元素三个种类。下面我们讲讲它们的具体用法:

4.2      X名称空间中的Attribute

前面我们已经讲过,Attribute和Property是两个层面上的东西,Attribute是语言层面上的东西,是给编译器看的,Property是面向对象层面上的东西,是给编程逻辑看。而且一个标签中的Attribute大部分对应对象的Property。在使用XAML编程的时候,如果你想给它加一点特殊的标记来改变XAML对它的解析,这时候就需要额外的给它添加一些Attribute了。比如,你想告诉XAML编译器将哪个编译结果和那个C#编译的类合并,这时候就必须为这个标签添加X:Class  Attribute来告诉编译器。X:Class并不是对象成员,而是重X空间硬贴上去的。让我们浏览一下常用的Attribute。

4.2.1    x:Class

这个Attribute是告诉XAML编译器将XAML编译器编译的结果和后台编译结果的哪一个类进行合并,使用x:Class有以下几点要求:

 

  • 这个Attribute只能用于根节点。
  • 使用x:Class的根节点的类型要与x:Class的值所指示的一致。
  • x:Class的值所指示的类型在声明的时候必须使用partial关键字。
  • x:Class已经在剖析最简单的XAML的时候已经讲过,在这就不多讲了。

 

4.2.2     X:ClassModiffier

这段代码是告诉XAML编译器有标签编译成的类具有什么样的访问级别。

使用这个Attribute的时候需要注意的是:

 

  • 标签必须具有x:Class Attribute。
  • X:ClassModiffier的值必须与X:Class所指定类的访问权限一致。
  • X:ClassModiffier的值随后台代码编译语言的不同而有所不同。
4.2.3    X:Name
我们之前已经提过XAML是一种声明式语言,但你是否想过XAML标签声明的是什么呢?其实,XAML标签声明的是对象,一个XAML对应着一个对象,这个对象一般是一个控件类的实例。在.NET平台上,类是引用类型。引用类型的实例一般都是以“引用者---实例”的形式成对出现的,而且我们只能通过引用者来访问实例。当一个实例不在被任何引用者引用的时候,它将作为内存垃圾被销毁。
常见的引用者是引用变量,但不是唯一的。比如下面这段XAML代码:
[html] view plaincopyprint?
  1. <Window x:Class="WpfApplication2.Window5"  
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.         Title="Window5" Height="300" Width="300">  
  5.     <Grid>  
  6.         <StackPanel Height="218" HorizontalAlignment="Left" Margin="19,31,0,0"  VerticalAlignment="Top" Width="237">  
  7.             <TextBox Height="23" Width="120" />  
  8.             <Button Content="Button" Height="23" Width="75" />  
  9.         </StackPanel>  
  10.     </Grid>  
  11. </Window>  
这篇代码中通篇没有出现一次名字,但是我们可以通过引用者的层级关系来找到我们最终想要的控件,我们在Button的Click下写如下代码:
[csharp] view plaincopyprint?
  1. private void Button_Click(object sender, RoutedEventArgs e)  
  2.        {  
  3.            StackPanel panel = this.Content as StackPanel;  
  4.            TextBox textBox = panel.Children[0] as TextBox;  
  5.            if (!string.IsNullOrEmpty(textBox.Name))  
  6.            {  
  7.                textBox.Text = textBox.Text;  
  8.            }  
  9.            else  
  10.            {  
  11.                textBox.Text = "NULL";  
  12.            }  
  13.        }  
this.Content引用着StackPanel的实例,StackPanel.Children[0]又引用着TextBox的实例。知道了这个关系,就可以一路顺着查找下来并同时进行类型转换,最终TextBox中显示的值是NULL。
理论上我们可以用上面的方法访问到UI上的所有元素,但这毕竟太麻烦了。换句话说:XAML这种对象声明语言只负责声明对象而不负责为这些对象声明引用变量。如果我们需要为对象准备一个引用变量以便在C#中直接访问就必须显示的告诉XAML编译器-----为这个对象声明引用变量,这时候,X:Name就派上用场了。
注意:
X:Name的作用有两个:
(1)告诉编译器,当一个标签带有x:Name时,除了为这个标
这个还真不能确定!签生成实例还要给这个标签声明一个引用变量,变量名就是x:Name的值。
(2)将XAML标签所对应的Name属性(如果有)也设置为x:Name值,并把这个值注册到UI树上,以方便查找。
4.2.4     x:FieldModifier
使用了x:Name后,XAML标签对应的实例就具有了自己的引用变量,而且这些引用变量都是类的字段,既然这样就不免要关注一下它的访问级别。默认情况下这些字段的级别都被设置成了Internal。在编程的时候,有的时候需要用一个程序集里的一个窗体元素访问到另一个程序集的窗体元素,那么就需要使用x:FieldModifier来改变变量的访问级别!
[html] view plaincopyprint?
  1. <StackPanel Height="218" HorizontalAlignment="Left" Margin="19,31,0,0"  VerticalAlignment="Top" Width="237">  
  2.             <TextBox Height="23" Width="120" x:Name="txtName" x:FieldModifier="internal"/>  
  3.             <Button Content="Button" Height="23" Width="75" Click="Button_Click" x:Name="btntest" x:FieldModifier="public"/>  
  4.         </StackPanel>  
因为x:FidleModifier是应用变量的访问级别,所以要配合x:Name一起使用。否则没有引用变量,何来引用变量访问级别。
4.2.5    x:Key
最自然的检索方式莫过于”key-value“的形式了。在XAML文件中,我们可以把需要多次使用的类容提取出来放在资源字典中,需要使用的时候就用这个资源的key将这个资源检索出来。
x:key的作用就是使用为资源贴上用于检索的索引。在WPF中,几乎每个元素都有自己的Resource属性,这个属性就是“key-value”的集合。只要把元素放进这个集合里,这个元素就成了资源字典中的一个条目。当然,为了能检索到这个条件,就必须为它添加x:Key。资源在WPF中非常重要,需要重复使用的XAML内容,如Style,各种Template和动画都需要放在资源里。
先让我们看XAML代码:
[html] view plaincopyprint?
  1. <Window x:Class="WpfApplication2.Window4"  
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.         xmlns:sys="clr-namespace:System;assembly=mscorlib"  
  5.         xmlns:local="clr-namespace:WpfApplication2"  
  6.         Title="Window4" Height="369" Width="675">  
  7.     <Window.Resources>  
  8.         <local:Human x:Key="human" Child="ABC"></local:Human>  
  9.         <sys:String x:Key="myString">测试</sys:String>  
  10.         <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">  
  11.             <Setter Property="Width" Value="30"></Setter>  
  12.             <Setter Property="Background" Value="black"></Setter>  
  13.         </Style>  
  14.     </Window.Resources>  
  15.     <Grid>  
  16.           
  17.         <Label Content="{ StaticResource ResourceKey=myString}" Height="28" HorizontalAlignment="Left" Margin="177,81,0,0" Name="label1" VerticalAlignment="Top" />  
  18.     </Grid>  
  19. </Window>  
资源不但可以在XAML中使用,也可以在C#中访问,C#中使用如下方式:
[csharp] view plaincopyprint?
  1. string str = this.FindResource("myString") as string;  
  2. this.label1.Content = str;  
4.2.6    x:Shared
学习x:key的时候我们已经了解到,如果把某个对象作为资源放入资源字典里后我们就可以把它们检索起来重复使用。那么每当我们检索到一个对象,我们得到的究竟是同一个对象呢,还是这个对像的一个副本呢?这就要看我们为x:Shared赋什么值了。x:Shared一定要与x:Key配合使用,如果x:Shared值为true,那么每次检索这个对象的时候,我们得到的都是同一个对象,反之,我们得到的就是这个对象的一个副本。默认这个值是true。也就是说我们使用的都是同一个对象。
4.3       x名称空间下的扩展标签
标记扩展实际就是一些MarkupExtension类的直接或间接派生类。x名称空间中就包含一些这样的类,所以称其为x名称空间标签的标记扩展。
4.3.1   x:Type
顾名思义,x:Type应该是一个数据类型的名称。一般情况下,我们在编程中操作的数据类型实例或者实例的引用。但有的时候我们也需要用到数据类型本身。
能让程序员在编程的层面上自由的操作这些数据类型,比如在不知道具体类型的情况下创建这个类型的实例并尝试调用它的方法,.NET命名空间里还包含了名为Type的类做为所有数据类型在编程层面上的抽象。
当我们想在XAML中表达某一数据类型就需要用到x:Type标记扩展。比如某个类的一个属性,它的值要求的是一个数据类型,当我们在XAML中为这个属性赋值是就需要用到x:Type。请看下面这个例子:
[html] view plaincopyprint?
  1. <UserControl x:Class="WpfApplication2.UserControl1"  
  2.              xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"   
  5.              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"   
  6.              mc:Ignorable="d"   
  7.              d:DesignHeight="52" d:DesignWidth="128">  
  8.     <Grid>  
  9.         <Button Content="Button" Height="30" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button1" VerticalAlignment="Top" Width="106" Click="button1_Click" />  
  10.     </Grid>  
  11. </UserControl>  

[csharp] view plaincopyprint?
  1. /// <summary>  
  2.    /// UserControl1.xaml 的交互逻辑  
  3.    /// </summary>  
  4.    public partial class UserControl1 : UserControl  
  5.    {  
  6.        public UserControl1()  
  7.        {  
  8.            InitializeComponent();  
  9.        }  
  10.        public Type MyWindowType { get; set; }  
  11.        private void button1_Click(object sender, RoutedEventArgs e)  
  12.        {  
  13.            Window myWin = Activator.CreateInstance(this.MyWindowType) as Window;  
  14.            if(myWin!=null)  
  15.            {  
  16.                myWin.Show();  
  17.            }  
  18.        }  
  19.    }  

[html] view plaincopyprint?
  1. <Window x:Class="WpfApplication2.Window4"  
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.         xmlns:sys="clr-namespace:System;assembly=mscorlib"  
  5.         xmlns:local="clr-namespace:WpfApplication2"  
  6.         Title="Window4" Height="369" Width="675">  
  7.     <Window.Resources>  
  8.         <local:Human x:Key="human" Child="ABC"></local:Human>  
  9.         <sys:String x:Key="myString">测试</sys:String>  
  10.         <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">  
  11.             <Setter Property="Width" Value="30"></Setter>  
  12.             <Setter Property="Background" Value="black"></Setter>  
  13.         </Style>  
  14.     </Window.Resources>  
  15.     <Grid>  
  16.   
  17.         
  18.         <local:UserControl1 HorizontalAlignment="Left" Margin="292,244,0,0" x:Name="userControl11" VerticalAlignment="Top" MyWindowType="{x:Type TypeName=local:Window1}"/>  
  19.     </Grid>  
  20. </Window>  
回顾一下之前的标记扩展语法,因为TypeExtension类的构造器可以接受数据类型名做为参数,所以我们完全可以这样写:
[html] view plaincopyprint?
  1. UserWindowType="{x:Type local:Window1}"  
编译并运行程序,单击主窗体上的按钮,自定义窗口就会显示出来,我们还可以多写几个窗体来扩展这个程序,到时后只需要修改MyWindowType里面的值就可以了。
4.3.2       x:Null
在XAML里面表示空值就是x:Null。
大部分时间我们不需要为属性附一个Null值,但如果一个属性就有默认值而我们有不需要这个默认值就需要用的null值了。在WPF中,Style是按照一个特定的审美规格设置控件的各个属性,程序员可以为控件逐个设置style,也可以指定一个style目标控件类型,一旦指定了目标类型,所有的这类控件都将使用这个style----除非你显示的将某个实例的Style设置为null。
请看下面的事例:
[html] view plaincopyprint?
  1. <Window x:Class="WpfApplication2.Window4"  
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.         xmlns:sys="clr-namespace:System;assembly=mscorlib"  
  5.         xmlns:local="clr-namespace:WpfApplication2"  
  6.         Title="Window4" Height="369" Width="675">  
  7.     <Window.Resources>  
  8.          
  9.         <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">  
  10.             <Setter Property="Width" Value="30"></Setter>  
  11.             <Setter Property="Background" Value="black"></Setter>  
  12.         </Style>  
  13.     </Window.Resources>  
  14.     <Grid>  
  15.         
  16.         <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="180,256,0,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" />  
  17.         <Label Content="{ StaticResource ResourceKey=myString}" Height="28" HorizontalAlignment="Left" Margin="177,81,0,0" Name="label1" VerticalAlignment="Top" />  
  18.          
  19.         <Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="10,10,0,0" Name="button2" VerticalAlignment="Top" />  
  20.         <Button Content="{x:Static local:Window4.Test}" Height="23" HorizontalAlignment="Left" Margin="128,12,0,0" Name="button3" VerticalAlignment="Top" Style="{x:Null}"/>  
  21.          
  22.     </Grid>  
  23. </Window>  
当然了,x:null也可以使用属性标签来设置这个值,前面已经讲过,在这就不在讲了。
4.3.3       x:Array
通过它的item属性向使用者暴露一个类型已知的ArrayList实例,ArrayList内成员的类型由x:Array的Type指明。下面这个例子就是把ArrayList做为数据源向一个ListBox提供数据:
[html] view plaincopyprint?
  1. <Window x:Class="WpfApplication2.Window4"  
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.         xmlns:sys="clr-namespace:System;assembly=mscorlib"  
  5.         xmlns:local="clr-namespace:WpfApplication2"  
  6.         Title="Window4" Height="369" Width="675">  
  7.       
  8.     <Grid>  
  9.           
  10.         
  11.           
  12.         <ListBox Height="100" HorizontalAlignment="Left" Margin="435,110,0,0" Name="listBox1" VerticalAlignment="Top" Width="176">  
  13.             <ListBox.ItemsSource>  
  14.                 <x:Array Type="sys:String">  
  15.                     <sys:String>Jim</sys:String>  
  16.                     <sys:String>Darren</sys:String>  
  17.                     <sys:String>Frank</sys:String>  
  18.                 </x:Array>  
  19.             </ListBox.ItemsSource>  
  20.         </ListBox>  
  21.     </Grid>  
  22. </Window>  
4.3.4        x:Static
这是一个很常用的标记扩展,它的作用是在XAML文档中使用数据类型为static的成员。因为XAML不能编写逻辑代码。所以使用x:Static访问的static成员一定是数据类型的属性和字段。我们看如下一些例子:
[csharp] view plaincopyprint?
  1. public Window4()  
  2.        {  
  3.            InitializeComponent();  
  4.            //SolidColorBrush brush = new SolidColorBrush();  
  5.            //brush.Color = Colors.Blue;  
  6.            //this.rectangle1.Fill = brush;  
  7.        }  
  8.   
  9.        public static string Test = "明月松间照,清泉石上流。";  
[html] view plaincopyprint?
  1. <Window x:Class="WpfApplication2.Window4"  
  2.         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
  3.         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
  4.         xmlns:sys="clr-namespace:System;assembly=mscorlib"  
  5.         xmlns:local="clr-namespace:WpfApplication2"  
  6.         Title="Window4" Height="369" Width="675">  
  7.    <Grid>  
  8.         <Button Content="{x:Static local:Window4.Test}" Height="23" HorizontalAlignment="Left" Margin="128,12,0,0" Name="button3" VerticalAlignment="Top" Style="{x:Null}"/>  
  9.         
  10.     </Grid>  
  11. </Window>  
如果一个程序需要支持国际化,一般需要把显示的字符串保存在一个资源类的Static属性中,所以支持国际化的程序UI中对x:Static的使用相当的频繁。
4.4        XAML指令元素
XAML指令元素只有两个:
  • x:Code 
  • x:XData
我们之前已经在代码后置一节介绍过x:Code标签,它的作用是可以在XAML文档中可以编写后置的C#后台逻辑代码,这样做的好处就是不需要把XAML和C#分放在两个文档当中,这样写的问题是代码不容易维护,不宜调试,一般没有人愿意这么干。
x:XData是一个专用标签。WPF把包含数据的对象称为数据源,用于把数据源中的数据提供给数据使用者的对象被称做是数据提供者,WPF中包含多种数据提供者,其中一个类名叫做XmlDataProvider实例,那么XmlDataProvider实例的数据就要放在x:XData的标签内容里。事例如下:


小结:
我已经比较完整的掌握了XAML的语法和常用元素。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

事物 php,什么是php事务

事务&#xff1a;用于保证数据的一致性&#xff0c;他由一组相关的dml语句组成&#xff0c;改组的dml语句要么全部成功&#xff0c;要么全部失败。当前版本的插件并不是事务安全的&#xff0c;因为他并没有识别全部的事务操作。SQL 事务单元是在单一服务器中运行的。插件并不能…

Flask form(登录,注册)

用户登录 from flask import Flask, render_template, request, redirect from wtforms import Form from wtforms.fields import core from wtforms.fields import html5 from wtforms.fields import simple from wtforms import validators from wtforms import widgetsapp …

怎么看so文件是哪个aar引进来的_手机爱奇艺下载视频存在哪个文件夹

我们很多朋友喜欢看视频使用爱奇艺观看&#xff0c;并且喜欢直接把视频缓冲到手机里&#xff0c;或是直接下载视频文件&#xff0c;但是经常不知道手机爱奇艺下载视频存在哪个文件夹&#xff0c;不知道怎么分享给好友或是传到电脑上&#xff0c;下面就来简单介绍一下。手机爱奇…

esxi能直通的显卡型号_显卡刷bios教程

一般来说显卡默认的出厂bios就已经很稳定&#xff0c;如果没有特殊情况下建议不要刷显卡bios。一般而言部分网友刷显卡BIOS目的是开核或超频&#xff0c;那么对于一个不会刷显卡bios的网友来说肯定会问显卡怎么刷bios类似的问题&#xff0c;那么本文这里就说一下有关显卡怎么刷…

关于Linux网卡调优之:RPS (Receive Packet Steering)

昨天在查LVS调度均衡性问题时&#xff0c;最终确定是 persistence_timeout 参数会使用IP哈希。目的是为了保证长连接&#xff0c;即一定时间内访问到的是同一台机器。而我们内部系统&#xff0c;由于出口IP相对单一&#xff0c;所以总会被哈希到相同的RealServer。 过去使用LVS…

footer.php置底,CSS五种方式实现Footer置底

页脚置底(Sticky footer)就是让网页的footer部分始终在浏览器窗口的底部。当网页内容足够长以至超出浏览器可视高度时&#xff0c;页脚会随着内容被推到网页底部&#xff1b;但如果网页内容不够长&#xff0c;置底的页脚就会保持在浏览器窗口底部。方法一&#xff1a;将内容部分…

安卓adapter适配器作用_自带安卓系统的便携屏,能玩出什么花样?

之前说到去年出差太多&#xff0c;平常就把便携屏带上了。之前也说了如果是像笔者这样的出差狗也知道&#xff0c;托运需要提前去机场一路着急忙慌&#xff0c;不托运只需要打印登机牌(纸质才给报销)排队安检登机就完了。有的时候可以把标准显示器来回寄&#xff0c;只要包装强…

Typora markdown公式换行等号对齐_Typora编写博客格式化文档的最佳软件

Typora-编写博客格式化文档的最佳软件Typora 不仅是一款支持实时预览的 Markdown 文本编辑器&#xff0c;而且还支持数学公式、代码块、思维导图等功能。它有 OS X、Windows、Linux 三个平台的版本&#xff0c;是完全免费的。作为技术人员或者专业人员&#xff0c;使用Markdown…

docker-machine

vbox安装 sudo /sbin/vboxconfig &#xfffc; yum install gcc make yum install kernel-devel-3.10.0-514.26.2.el7.x86_64 转载于:https://www.cnblogs.com/yixiaoyi/p/dockermachine.html

intention lock_写作技巧:你写出来的情节有用吗?好情节的原则——LOCK系统

读者喜欢一本小说的原因只有一个&#xff1a;很棒的故事。——Donald Maass来&#xff0c;话筒对准这位小作家&#xff0c;请问你是如何构思故事的&#xff1f;是习惯于现在脑海中把故事都想好了&#xff0c;才开始写作&#xff1f;还是习惯于临场发挥&#xff0c;喜欢一屁股坐…

power designer数据流图_鲲云公开课 | 三分钟带你了解数据流架构

目前&#xff0c;市场上的芯片主要包括指令集架构和数据流架构两种实现方式。指令集架构主要包括X86架构、ARM架构、精简指令集运算RISC-V开源架构&#xff0c;以及SIMD架构。总体来说&#xff0c;四者都属于传统的通用指令集架构。传统的指令集架构采用冯诺依曼计算方式&#…

linux php环境搭建教程,linux php环境搭建教程

linux php环境搭建的方法&#xff1a;首先获取相关安装包&#xff1b;然后安装Apache以及mysql&#xff1b;接着修改配置文件“httpd.conf”&#xff1b;最后设置环境变量和开机自启&#xff0c;并编译安装PHP即可。一、获取安装包PHP下载地址&#xff1a;http://cn.php.net/di…

jsp放在web-inf下的注意事项

原文&#xff1a;http://blog.csdn.net/whatlookingfor/article/details/38381881 ------------------------------------------------- web-inf目录是不对外开放的&#xff0c;外部没办法直接访问到。所有只能通过映射来访问&#xff0c;比如映射为一个action或者servlet通过…

asp.net 获取全部在线用户_Qamp;A | 在线考试问卷答疑

01.如何批量导入试题&#xff1f;如果您已经在word或者excel中准备好了考试文档&#xff0c;通过批量导入试题的方式&#xff0c;可以让考试问卷的制作更加方便快捷。详细了解批量导入考试的文本格式&#xff1a;【点击此处】02.如何进行考试随机抽题&#xff1f;老师事先建立题…

PHP 框架 模块化,Laravel 的模块化开发框架 Notadd RC1

本文我们要和大家分享 Laravel 的模块化开发框架 Notadd RC1 的介绍&#xff0c;它的优点是修复了首页编辑模式下滚动的BUG (Eleven)&#xff0c;修复了后台菜单管理修改后不跳转的BUG (ganlanshu0211)&#xff0c;修复后台 ESLint 的 Camelcase 的错误 (狒狒)&#xff0c;暂时…

spring mvc 工作流程

1A&#xff09;客户端发出http请求&#xff0c;只要请求形式符合web.xml 文件中配置的*.action的话&#xff0c;就由DispatcherServlet 来处理。 1B&#xff09;DispatcherServlet再将http请求委托给映射器 的对象来将http请求交给对应的Action来处理 2&#xff0…

excel切片器_如何在Excel表格中使用切片器

切片器除了在数据透视表中会使用到&#xff0c;在Excel的表格功能下面&#xff0c;也是可以进行使用的。下面就来介绍一下如何使用切片器这个工具。创建和使用切片器1.首先就是要创建一个表格。选中目标区域&#xff0c;使用快捷键CtrlT&#xff0c;创建一个表格。2.点击“插入…

分阶段付款 学php,项目整理-支付宝的支付问题

支付宝作为一个被广泛使用的支付工具&#xff0c;在是用的时候可以被广泛使用。可以使用demo提取(由于当时开发时SDK下载路径无法下载&#xff0c;直接从DEMO中筛选了需要部分)------------------我是开始开发思路的分割线--------------------------本次主要是APP支付的流程。…

Mac os区别_SN及Mac地址烧录

platform:RK3399 OS:Android 7.1 参考: 1.比特人生 https://blog.csdn.net/ielife/article/details/86719313 2.KrisFei https://blog.csdn.net/kris_fei/article/details/79447343?ops_request_misc%257B%2522request%255Fid%2522%253A%2522158883304619726869022990%2522%25…

linux 查看数据库和表 mysql 命令

2019独角兽企业重金招聘Python工程师标准>>> 查看是否有安装数据库 &#xff1a;rpm -qa|grep -i mysql 如图已安装&#xff1a; 未安装&#xff1a; 查看MySQL版本的四种方法 1 在终端下执行 mysql -V 2 在help中查找 mysql --help |grep Distrib 3 在mysql 里查看…