WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器

这篇具有很好参考价值的文章主要介绍了WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官方文档

往期回顾

零基础笔记

WPF 零基础入门笔记(0):WPF简介

项目实战(已完结)

WPF MaterialDesign 初学项目实战(0):github 项目Demo运行
WPF MaterialDesign 初学项目实战(1)首页搭建
WPF MaterialDesign 初学项目实战(2)首页导航栏样式
WPF MaterialDesign 初学项目实战(3)动态侧边栏
WPF MaterialDesign 初学项目实战(4)侧边栏路由管理
WPF MaterialDesign 初学项目实战(5):设计首页
WPF MaterialDesign 初学项目实战(6):设计首页(2),设置样式触发器。已完结

WPF项目创建

我们这里选择.net core版本的WPF

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器
WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器

为什么选net core版本

.NET core是以后.NET 发展的方向。
.NET core 特点

  • 微软主推的方向,.NET framework目前只有维护性更新
  • 跨平台,虽然WPF不能跨平台,但是你以后写MAUI,控制台程序,WEBAPI,都可以在Linux端运行。跨平台主要就是跨linux,方便项目部署。
  • 配套的生态都已经从NET Framework 迁移过来了。
  • 你都选择WPF而不是 winform,那顺便多学一点呗

WPF 静态页面

如果学过web端,我这里就拿Web端来进行比较。
web包含:html,css,JS。

  • html:声明有什么元素
  • CSS:让界面更加好看
  • JS:页面逻辑代码

在WPF中,分离会更加彻底。WPF包含Xmal和C#。

  • Xmal:声明元素,声明样式,负责交互逻辑
    • 对应Web端的 Html+CSS+简单页面交互
  • C#:复杂页面交互和业务逻辑

控件我就略过了,没什么好说的,就是按钮,文本,输入框。参数自己去了解一下。不占用太多篇幅

比如Button类
WPF Button
但是我只能说,微软的文档写的一坨狗屎,第一我查不到WPF专门的

WPF 页面布局

我之前写过,就不重复写了。

WPF:WPF原生布局说明

WPF样式

我们输入

        <Style>
			<S   //出现提示
        </Style>

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器
这里我们可以看到有好几种样式

  • Style.Setters
    • Style样式:类似于CSS,用于设置页面的形象
  • Style.Tirggers
    • 触发器,用于设置简单的交互
  • Sytle.Resource
    • 资源,没怎么用过

Style样式

如果安装CSS的方式来说,WPF分为行内样式和行外样式

效果,生成如下图片

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器

行内样式

<Rectangle Width="200"
                   Height="160"
                   Stroke="Blue">
            <Rectangle.Fill>
                <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">//使用行内标签来对代码进行优化
                    <LinearGradientBrush.GradientStops>
                        <GradientStop Offset="0.2"
                                      Color="LightBlue" />
                        <GradientStop Offset="0.7"
                                      Color="DarkBlue" />
                        <GradientStop Offset="1.0"
                                      Color="LightBlue" />
                    </LinearGradientBrush.GradientStops>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>

行外样式

如果是简单样式,可以这么写
        <Style x:Key="MyButton"
               TargetType="Button">
            <Style.Setters>
                <Setter Property="Content"
                        Value="" />
            </Style.Setters>
        </Style>
如果是复杂样式
 <Window.Resources>
        <!--x:Key为样式的名称,TargetType是样式生效的目标-->
        <Style x:Key="MyRectFill" TargetType="Rectangle">
        <!--Style是样式设置-->
            <Style.Setters>
            <!--设置Recangle的Fill属性。使用Property=属性,Value=值的形式-->
                <Setter Property="Fill" >
                    <Setter.Value><!--对应的样式属性,如果Value是简单字符串,可以不展开-->
                        <LinearGradientBrush StartPoint="0,0"
                                             EndPoint="1,1">
                            <GradientStop Offset="0.2"
                                          Color="LightBlue" />
                            <GradientStop Offset="0.7"
                                          Color="DarkBlue" />
                            <GradientStop Offset="1.0"
                                          Color="LightBlue" />
                        </LinearGradientBrush>
                    </Setter.Value>
                </Setter>
            </Style.Setters>
        </Style>
    </Window.Resources>
    <Grid>
        <Rectangle Width="200"
                   Height="160"
                   Stroke="Blue" Style="{StaticResource MyRectFill}" >
        </Rectangle>
    </Grid>

WPF样式继承

一个简单的按钮

    <Window.Resources>
        <Style x:Key="MyButton"
               TargetType="Button">
            <Style.Setters>
                <Setter Property="Content"
                        Value="按钮" />
                <Setter Property="Width" Value="100"/>
                <Setter Property="Height" Value="30"/>
            </Style.Setters>
        </Style>
    </Window.Resources>
    <Grid>
        <Button  Style="{StaticResource MyButton}"/>
    </Grid>

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器

 <Window.Resources>
        <Style x:Key="MyButton"
               TargetType="Button">
            <Style.Setters>
                <Setter Property="Content"
                        Value="按钮" />
                <Setter Property="Width" Value="100"/>
                <Setter Property="Height" Value="30"/>
            </Style.Setters>
        </Style>
        <!--使用继承,继承MyButton-->
        <Style x:Key="MyButton2" BasedOn="{StaticResource MyButton}"  TargetType="Button">
            <Style.Setters >
                <Setter Property="Background"
                        Value="Yellow" />
                <Setter Property="BorderBrush" Value="Red"/>
            </Style.Setters>
        </Style>
    </Window.Resources>
    <Grid>
        <Button  Style="{StaticResource MyButton2}"/>
    </Grid>

效果

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器

WPF触发器

WPF触发器用于简单的交互逻辑
WPF为了实现业务和界面逻辑尽可能的分离,在Xmal中可以实现简单的交互逻辑和页面元素沟通。而简单的交互逻辑就是通过WPF触发器来实现的

单条件触发器

这里设计一个简单的触发器,通过鼠标悬停事件来进行区分。

 <Window.Resources>
        <Style x:Key="MyButton" TargetType="Button">
            <!--设置触发器-->
            <Style.Triggers>
                <!--当鼠标停留属性为Ture时-->
                <Trigger Property="IsMouseOver"
                         Value="True">
                    <Setter Property="Foreground"
                            Value="Red" />
                    <Setter Property="FontSize"
                            Value="30" />
                </Trigger>
                <!--当鼠标停留事件为False时-->
                <Trigger Property="IsMouseOver"
                         Value="False">
                    <Setter Property="Foreground"
                            Value="Blue" />
                    <Setter Property="FontSize"
                            Value="20" />
                </Trigger>
            </Style.Triggers>
        </Style>

    </Window.Resources>
    <Grid>
        <Button Width="100"
                Height="50"
                Content="按钮"
                Style="{StaticResource MyButton}" />
    </Grid>

实现效果

WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器文章来源地址https://www.toymoban.com/news/detail-507260.html

多条件触发
<Window.Resources>
        <Style x:Key="MyButton" TargetType="Button">
            <!--设置触发器-->
            <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>

    </Window.Resources>
    <Grid>
        <Button Width="100"
                Height="50"
                Content="按钮"
                Style="{StaticResource MyButton}" />
    </Grid>

到了这里,关于WPF 零基础入门笔记(1):WPF静态页面,布局+样式+触发器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF 入门笔记 - 02 - 布局综合应用

    本篇博文对接上篇末尾处WPF常用布局控件的综合应用,为痕迹g布局控件介绍课后作业的一个思路方法。 首先来谈一谈布局原则: WPF 窗口只能包含一个元素(Window元素属于内容控件,内容控件只允许有一个子元素),所以我们得在窗口中放置一个容器,才能使我们的窗口放置更

    2024年02月06日
    浏览(48)
  • [前端系列第2弹]CSS入门教程:从零开始学习Web页面的样式和布局

    在这篇文章中,我将介绍CSS的基本概念、语法、选择器、属性和值,以及如何使用它们来定义Web页面的外观和布局。还将给一些简单而实用的例子,可以跟着我一步一步地编写自己的CSS样式表。 目录 一、什么是CSS 二、CSS的语法 三、CSS的选择器 四、CSS的属性和值 (一)颜色

    2024年02月13日
    浏览(59)
  • flutter基础入门教程(Dart语法+UI布局+页面路由+后端连接)

    1、环境安装 1基础安装步骤教程 Android Studio安装与配置 https://juejin.cn/post/6844904054569582605 安装Android Studio前,需要先选择安装Java环境,Java需要到Oracle官网上下载安装,需要注册一个Oracle账号。 https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html Windows 10 配置Java 环境变量

    2024年02月03日
    浏览(36)
  • Vue3 入门笔记 ---- 利用Element Plus对页面进行布局划分以及实现左侧公共菜单

    这个系列的笔记重点会放在怎么样利用Vue3把项目架设起来并跟后端API互动,不会介绍Vue的基础特性,关于Vue的基础特性可以参考这个视频四个小时带你快速入门Vue,我是看这个入门的,觉得还不错。 代码地址: https://github.com/yexia553/vue_study/tree/%E9%85%8D%E7%BD%AEvue-router/vue3-note

    2024年02月04日
    浏览(67)
  • CSS样式前端HTML页面常用CSS效果实现及其相关配置信息------前端入门基础教程

    !DOCTYPE html !-- 这是HTML的注释 -- html lang=\\\"en\\\" id=\\\"myHtml\\\"     head         !-- 这里不是设置了编码,而是告诉浏览器,用什么编码方式打开文件避免乱码 --         meta charset=\\\"UTF-8\\\"         meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1.0\\\"         titleHtmlAll/title         

    2024年02月05日
    浏览(59)
  • WPF 入门笔记 - 04 - 数据绑定 - 补充内容:资源基础

    宇宙很大,生活更大,也许以后还有缘相见。 --三体 🌌 💭 该篇作为[WPF 入门笔记 - 04 - 数据绑定] - Additional Content 章节的补充内容 XAML 资源概述 (WPF .NET) WPF中的每一个元素都有一个 Resources 属性,该属性存储了一个资源字典集合。一般来说,可以把WPF的资源按照不同的性质分

    2024年02月11日
    浏览(41)
  • WPF 零基础入门笔记(3):数据绑定详解(更新中)

    WPF基础知识博客专栏 WPF微软文档 WPF控件文档 B站对应WPF数据绑定视频教程 我们在之前的文章中,详细解释了数据模版和控件模板。简单来说数据模板和控件模板就是为了解决代码重复的问题。我们可以回顾一下之前的所有内容。 为了不写重复的样式,WPF提供了样式设置 为了

    2024年02月11日
    浏览(37)
  • 项目难点:解决IOS调起软键盘之后页面样式布局错乱问题

    需求背景 :     开发了一个类似问卷星的问卷系统并重构的项目,刚开始开发的为  PC 端 ,其中最头疼的一点无非就是 IE 浏览器的兼容适配性问题;     再之后项目经理要求同步进行开发  移动端  ,简单的说就是写 H5 页面,到时候会内嵌在 App 应用、办公系统 或 小程序

    2024年02月04日
    浏览(54)
  • 项目难点:解决IOS调用起软键盘之后页面样式布局错乱问题

    需求背景 :     开发了一个类似问卷星的问卷系统并重构的项目,开始开发的  PC 端 ,其中最头疼的一点无非就是 IE 浏览器的兼容适配性问题;     再之后项目经理要求同步进行开发  移动端  ,简单的说就是写 H5 页面,到时候会内嵌在 App 应用或 小程序 里,刚开始都是

    2024年02月12日
    浏览(41)
  • 用html实现一个静态登陆页面-可根据需求更改样式

    一、创建html文件,vscode下载相关插件 我们先选择一个文件夹创建login.html,.之前的文件命无所谓,.之后就必须为html或者htm。 在编辑改文件输入!且出现提示后按回车或按tab快捷生成基础代码。 然后我们下载一个可以方便我们开发的插件。 搜索之后点击一下然后下载即可。

    2024年02月04日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包