WPF布局基础原则
1.一个窗口中只能包含一个元素
2. 不应该显示设置元素尺寸
3. 不应使用坐标设置元素的位置
4.可以嵌套布局容器
WPF布局容器
- StackPanel:水平或垂直排列元素,Orientation属性分别为:Horizontal/Vertical
- WrapPanel:水平或垂直排列元素、针对剩余空间不足会进行换行或换列进行排列。
- DockPanel:根据容器的边界、元素进行Dock.Top(Left、Right、Bottom)设置 默认情况最后一个元素会填充满 LastChildFill="False"
- Grid:类似Table表格,可以灵活设置行列并且放置控件元素(最常用的)
- UniformGrid:指定行和列的数量,均分有限的容器空间。
- Canvas:使用固定的坐标设置元素的位置,不具备停靠等功能。
WPF样式:TargetType:样式所指定的类型
Foreground:字体颜色
FontSize:字体大小
FontFamily:字体
Background:背景颜色
margin边距
CornerRadius:圆角矩形
HorizontalAlignment:水平位置
VerticalAlignment:垂直位置
触发器的使用
1:使用场景:例如当鼠标碰到按钮时候字号为30,字体颜色为红色,当鼠标为碰到按钮时候字号为20 ,字体颜色为蓝色;
csharp
<Style x:Key="MM" TargetType="Button">
<Setter Property="Width" Value="300"/>
<Setter Property="Height" Value="48"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="FontSize" Value="30"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Foreground" Value="Blue"/>
<Setter Property="FontSize" Value="20"/>
</Trigger>
</Style.Triggers>
</Style>
多条件触发器的使用
csharp
<Style x:Key="MM" TargetType="Button">
<Setter Property="Width" Value="300"/>
<Setter Property="Height" Value="48"/>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsFocused" Value="True"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Foreground" Value="Red"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
事件触发器
自定义控件模板
Cell Template数据模板
引用样式的方法:
StaticResource:静态的
DynamicResource动态的