WPF基础知识

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动态的

相关推荐
samble3 小时前
从零搭建灌装监控系统(十三):报警系统设计,生命周期与通知
c#·wpf·mvvm·modbus·工业控制
samble21 小时前
从零搭建灌装监控系统(十二):配置系统,原子写入与容错
c#·wpf·mvvm·modbus·工业控制
蜗牛互联网3 天前
OLMo-core 3的token gerrymandering提醒:MoE路由要按时间窗验收
java·人工智能·wpf
LateFrames3 天前
WPF 升级选型:用 .NET 8 还是 .NET 10
.net·wpf·.net8·.net10
samble4 天前
从零搭建灌装监控系统(十):生产追溯,条码触发自动记录
c#·wpf·mvvm·modbus·工业控制
SamChan906 天前
PDF页面旋转与CropBox陷阱:译文回填位置总是错位的根因实测
python·ai·pdf·wpf
SamChan907 天前
PDF翻译时页眉页脚总在捣乱?跨页重复文本块的检测与过滤实测
人工智能·python·ai·pdf·wpf
samble14 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas14 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf
dalong1016 天前
WPF:Modbus 状态监控
wpf·modbus