WPF学习笔记(一)——新建WPF应用程序

(一) 新建WPF应用程序
XAML语言:可扩展应用程序标记语言,命名空间与.NET中的不是一一对应的,而是一对多,都是“网址”类型的,是遵循XAML解析器标准的命名规则,不是真正的网址。

xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml

对应一些与XAML语法和编译相关的CLR名称空间,例如

<Style x:key="buttonMouseOver" TargetType="{x:Type Button}">

这里的xmlns和xmlns:x的区别在于x作为别名,在应用时,以前缀形式出现,而xmlns作为默认命名空间,不使用前缀标识的元素,来自该命名空间。
XAML命名空间的语法:
xmlns[:可选映射前缀]=“命名空间描述”
**注意:*没有加可选映射前缀的xmlns是WPF默认的命名空间,一个xaml文件只能有一个默认的命名空间
一个完整的xaml文件,必须具备两个命名空间。
(二) WPF用于布局的面板包括:
StackPanel 栈面板、WrapPanel 环绕面板、DockPanel 停靠面板、Canvas 画布、Grid 网格面板、UniformGrid 均布网格 HorizontalAlignment水平对齐 VerticalAlignment垂直对齐
下面分别介绍:
I. Grid类把窗体分割成若干网格,有ColumnDefinitions和RowDefinitions两个属性,定义多少列、多少行,对于行高和列宽可以设置三类值:
1)绝对值:double数值加单位后缀,默认为像素
2)比例值:double数值后加
,表示该行占据窗体剩下的所有的高度,宽度,让窗体3:1,只要将两个行定义分别设置为3就可以了。
3)自动值:字符串Auto
如果希望列宽可以拖动,Grip布局本身是不支持的,需要用Grid布局加上GridSplitter来实现,GridSplitter会改变Grid初始的行高、列宽,代码如下:

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="25"></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="150"></ColumnDefinition>
            <ColumnDefinition Width="Auto"></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <TextBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" BorderBrush="Black" />
        <TextBox Grid.Row="1" Grid.Column="0" BorderBrush="Black" />
        <GridSplitter Grid.Row="1" Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Center" Width="5" Background="Gray" ShowsPreview="True"></GridSplitter>
        <TextBox Grid.Row="1" Grid.Column="2" BorderBrush="Black" />
    </Grid>

控件跨行或者跨列:(相当于合并单元格)
正常状态:

<Label Grid.Column=0”  Grid.Row=1”  HorizontalAlignment="Stretch "  VerticalAlignment="Stretch"Content=”Test4”/>

跨列:

<Label Grid.Column=1”(控件的起始列)  Grid.ColumnSpan=2”(列跨度,这里是从列23)  Grid.Row=1”  HorizontalAlignment="Stretch "  VerticalAlignment="Stretch"  Content=”Test4”/>

跨行和跨列一样,用Grid.RowSpan。自适应宽度和高度其HorizontalAlignment 和VerticalAlignment 用Stretch,当设置这两个属性时,如果向填充整个区域,不能设置Width和Height属性,Margin是设置控件与父级容器的所有边距;若为Top则是顶部对齐的效果,此时可以设置Height高度,宽度不可设;若为HorizontalAlignment为Left,VerticalAlignment为Bottom是水平左对齐,可设置宽度,垂直底部对齐,可设置高度。
II. StackPanel相当于一行横排或者一列竖排(Orientation设置水平垂直属性),嵌套也能实现Grid效果,是以水平或者竖直方向对子元素进行排列。
III. WrapPanel在一系列可换行的行中放置元素,水平方向上从左到右,垂直方向上自上而下。
IV. DockPanel根据容器的整个边界调整元素。
V. UniformGrid在不可见但强制所有单元格具有相同尺寸的表中防止元素。
VI. Canvas使用固定坐标绝对定位元素,没有锁定或停靠功能,对于尺寸可变的窗口不适用。

让控件跟着窗体一起变化的方法:
利用WPF中的ViewBox容器空间,它会自动缩放容器中的子空间以填满自身,但它只能有一个控件,可以把Canvas控件作为ViewBox控件的子控件,然后在Canvas中布局其他的控件。

<Viewbox Name=”Viewbox1” Stretch=”Fill”>
<Canvas Height=200”Name=”Canvas1”Width=300”Background=”#FF8EDE75”>
</Canvas>
 </Viewbox>  

猜你喜欢

转载自blog.csdn.net/qq_42334826/article/details/113118877