c#软件开发学习笔记--WPF(控件、样式)

WPF 学习教程 以下是刚刚 WPF 学习教程的摘要: WPF (Windows Presentation Foundation) 是微软提供的用于构建 Windows 桌面应用程序的 UI 框架。本教程涵盖了 WPF 的基本概念和核心组件: 1. **WPF 基本概念**:介绍了 XAML 语言、WPF 项目结构等内容。 2. **布局系统**:讲解了常用的布局容器,如 `Grid`、`StackPanel`、`WrapPanel`、`DockPanel` 和 `Canvas`,并提供了代码示例。 3. **控件使用* 阅读详情

WPF 学习总结

一、WPF 基础概念

1.1 什么是 WPF

  • WPF (Windows Presentation Foundation):微软推出的基于 .NET Framework 的桌面客户端 UI 框架。
  • 使用 XAML 标记语言来定义界面,实现 UI 与逻辑分离。
  • 应用程序结构:Application → Window / NavigationWindow → Page / 控件。

1.2 WPF 编译原理

  • .xaml 文件编译为 .baml(二进制资源文件),再嵌入到程序集生成的二进制文件中。
  • .xaml.cs(Code-Behind 代码隐藏文件)编译为普通的 .cs 二进制代码。

二、XAML 语法

2.1 XAML 概述

  • XAML(Extensible Application Markup Language)是一种声明性标记语言,类似 HTML/XML。
  • .xaml 文件本质上是 XML 文件,区分大小写。

2.2 常用命名空间

命名空间前缀用途
http://schemas.microsoft.com/winfx/2006/xaml/presentation默认WPF 核心控件/元素
http://schemas.microsoft.com/winfx/2006/xamlx:XAML 基础关键字(x:Class, x:Name, x:Key, x:Array, x:Static 等)
http://schemas.microsoft.com/expression/blend/2008d:设计时预览属性(仅在 VS/Blend 中生效,运行时忽略)
http://schemas.openxmlformats.org/markup-compatibility/2006mc:标记兼容性,配合 mc:Ignorable="d" 告知编译器忽略 d: 前缀
clr-namespace:项目名local:引用当前项目的 CLR 命名空间

2.3 XAML 语法要点

  • 标签本质:是一个类(对象),WPF 中称为元素或控件。
  • 标签类型:双标签(非空标签,闭合标签)、单标签(空标签)。
  • 属性:只出现在开始标签中,以键值对形式存在,官方称为特性语法。
  • 内容区:开始标签和结束标签之间的信息,可以包含文本或子标签。
  • 附加属性:标签本身没有的属性,由其他标签附加而来,如 Grid.Row、Grid.Column、DockPanel.Dock。
  • 标记扩展:使用 {} 语法,如 {StaticResource key}、{Binding Path}。

2.4 实体字符

实体字符含义
&lt;小于号 <
&gt;大于号 >
&#160;空格
&#165;人民币符号 ¥
&#169;版权符号 ©
&#174;注册商标符号 ®

三、App.xaml 与窗体启动方式

3.1 三种启动方式

方式一:StartupUri 属性(推荐)

<Application StartupUri="MainWindow.xaml">
  • 最简单、最常用的方式,不能传递参数。

方式二:Startup 事件或重写OnStartup方法(推荐)

<Application Startup="Application_Startup">
private void Application_Startup(object sender, StartupEventArgs e)
{
    this.ShutdownMode = ShutdownMode.OnExplicitShutdown;
    Window1 w1 = new Window1(100);
    w1.ShowDialog();
    this.ShutdownMode = ShutdownMode.OnMainWindowClose;
}
  • 可以传递参数,灵活性更高。

方式三:自定义 Main 方法(不推荐)

[STAThread]
public static void Main(string[] args)
{
    Application app = new Application();
    app.StartupUri = new Uri("Window1.xaml", UriKind.Relative);
    app.Run();
}
  • 需要在 App.xaml 中设置生成操作为无,避免多个入口函数。
  • 必须加 [STAThread] 线程安全特性。

3.2 窗体显示方式

  • ShowDialog():模态窗口(阻塞式)
  • Show():非模态窗口
  • app.Run(win):指定主窗口运行
  • app.MainWindow = win; win.Show(); app.Run():先设置主窗口再运行

四、布局控件

4.1 Grid(网格布局)

  • 最常用的布局容器,支持行列定义。
  • 定义列:Grid.ColumnDefinitions + ColumnDefinition
  • 定义行:Grid.RowDefinitions + RowDefinition
  • 单元格合并:Grid.RowSpan、Grid.ColumnSpan
  • 列宽可以使用 *(比例关系),如 2*、3*。
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="2*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <!-- 控件放置 -->
    <Button Grid.Row="0" Grid.Column="0" Content="按钮"/>
</Grid>

4.2 StackPanel(堆叠面板)

  • 子元素按水平或垂直方向依次排列(默认垂直)。
  • 适用于简单的线性布局。

4.3 WrapPanel(自动换行面板)

  • 子元素水平排列,超出宽度自动换行。

4.4 DockPanel(停靠面板)

  • 子元素可以停靠在上、下、左、右四个方向。
  • 最后一个子元素默认填充剩余空间。
<DockPanel>
    <Button DockPanel.Dock="Top" Content="上"/>
    <Button DockPanel.Dock="Bottom" Content="下"/>
    <Button DockPanel.Dock="Left" Content="左"/>
    <Button DockPanel.Dock="Right" Content="右"/>
    <StackPanel Background="Orange"/>  <!-- 填充剩余空间 -->
</DockPanel>

4.5 Border(边框)

  • 用于为子元素添加边框和背景。
  • 常用属性:BorderBrush、BorderThickness、CornerRadius(圆角)、Background。

五、样式(Style)

5.1 三种样式级别(优先级从高到低)

  1. 行内样式:直接在控件标签上设置属性
  2. 局部样式:定义在 Window.Resources 中,仅当前窗体有效
  3. 全局样式:定义在 Application.Resources 中,整个应用程序有效

5.2 样式语法

<Style x:Key="buttonStyle1" TargetType="Button">
    <Setter Property="Background" Value="Red"/>
    <Setter Property="Foreground" Value="Green"/>
    <Setter Property="Width" Value="100"/>
    <Setter Property="Height" Value="100"/>
</Style>

5.3 样式继承(BasedOn)

  • 通过 BasedOn="{StaticResource BaseStyle}" 继承基础样式。
<Style x:Key="BaseStyle" TargetType="Control">
    <Setter Property="Width" Value="120"/>
    <Setter Property="Height" Value="30"/>
</Style>

<Style x:Key="TextBoxStyle1" BasedOn="{StaticResource BaseStyle}" TargetType="TextBox">
    <Setter Property="Grid.Row" Value="0"/>
    <Setter Property="Grid.Column" Value="1"/>
</Style>

5.4 使用样式

<Button Style="{StaticResource buttonStyle1}" Content="按钮"/>

六、资源(Resources)

6.1 资源字典(ResourceDictionary)

  • 用于存储可重用的样式、模板、数据等。
  • 定义在 Application.Resources 或 Window.Resources 中。

6.2 合并资源字典

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Resources/Dictionary1.xaml"/>
            <ResourceDictionary Source="/Resources/Dictionary2.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

6.3 资源字典文件示例

<!-- Dictionary1.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Style x:Key="LabelStyle" TargetType="Label">
        <Setter Property="Content" Value="_Account"/>
        <Setter Property="Target" Value="{Binding ElementName= txtAccount}"/>
    </Style>
</ResourceDictionary>

6.4 快捷键设置(Label 的 Target 属性)

  • _Account 中的下划线表示快捷键为 Alt + A。
  • Target="{Binding ElementName= txtAccount}" 将焦点定位到对应的输入控件。

七、常用控件

7.1 内容控件

控件说明示例
Button按钮<Button Content="点击" Click="Button_Click"/>
Label标签(支持快捷键)<Label Content="_Account"/>
TextBlock文本块(轻量级)<TextBlock>文本内容</TextBlock>

7.2 输入控件

控件说明
TextBox文本框
PasswordBox密码框
ListBox列表选择框

7.3 列表控件

控件说明
ListBox列表控件,支持 ItemsSource 绑定数据源
ComboBox下拉选择框

7.4 选项卡控件

<TabControl>
    <TabItem Header="军事">
        <StackPanel>
            <TextBlock>军事界面</TextBlock>
        </StackPanel>
    </TabItem>
    <TabItem Header="娱乐">
        <TextBlock>娱乐界面</TextBlock>
    </TabItem>
</TabControl>

7.5 控件对齐方式

  • VerticalAlignment:垂直对齐(Top、Bottom、Center、Stretch)
  • HorizontalAlignment:水平对齐(Left、Right、Center、Stretch)
  • VerticalContentAlignment:内容垂直对齐
  • HorizontalContentAlignment:内容水平对齐
  • Margin:外边距(顺序:左、上、右、下)

八、数据绑定

8.1 静态资源绑定

  • 绑定到 Resources 中定义的资源。
<Window.Resources>
    <sys:String x:Key="str1">成龙</sys:String>
    <x:Array x:Key="items" Type="sys:String">
        <sys:String>蔡徐坤</sys:String>
        <sys:String>小刚</sys:String>
    </x:Array>
</Window.Resources>

<TextBlock Text="{StaticResource str1}"/>
<ListBox ItemsSource="{StaticResource items}"/>

8.2 DataContext 绑定(数据上下文)

  • 通过 DataContext 设置数据源,使用 {Binding Property} 绑定属性。
<!-- 引入命名空间 -->
xmlns:vm="clr-namespace:项目名.Model"

<Window.DataContext>
    <vm:DataViewModel/>
</Window.DataContext>

<TextBlock Text="{Binding Id}"/>
<TextBlock Text="{Binding Name}"/>
<ListBox ItemsSource="{Binding lists}"/>
// DataViewModel.cs
public class DataViewModel
{
    public int Id { get; set; } = 100;
    public string Name { get; set; } = "特朗普";
    public List<string> lists { get; set; } = new List<string>() { "金发", "商人", "川建国" };
}

8.3 代码动态添加数据

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    listbox.Items.Add("张三");
    listbox.Items.Add("李四");
    listbox.Items.Add("王五");
}

九、导航窗体

9.1 导航窗体结构

  • Window → NavigationWindow(导航窗体)
  • NavigationWindow 中包含多个 Page(页面)

9.2 设置导航窗体

<!-- 将 Window 改为 NavigationWindow -->
<NavigationWindow x:Class="项目名.MainWindow"
                  Source="Pages/MainPage.xaml"
                  ShowsNavigationUI="False">
    <!-- ShowsNavigationUI="False" 隐藏默认导航箭头 -->
</NavigationWindow>
// Code-Behind 将 Window 改为 NavigationWindow
public partial class MainWindow : NavigationWindow

9.3 页面跳转

// 方式一:通过对象跳转
this.NavigationService.Navigate(new Page1());

// 方式二:通过 URI 跳转
this.NavigationService.Navigate(new Uri("pack://application:,,,/Pages/Page2.xaml"));

// 返回上一页
if (this.NavigationService.CanGoBack)
{
    this.NavigationService.GoBack();
}

十、渐变(Brush)

10.1 线性渐变(LinearGradientBrush)

<Window.BorderBrush>
    <LinearGradientBrush>
        <GradientStopCollection>
            <GradientStop Offset="0.0" Color="Red"/>
            <GradientStop Offset="1.0" Color="Blue"/>
        </GradientStopCollection>
    </LinearGradientBrush>
</Window.BorderBrush>

10.2 径向渐变(RadialGradientBrush)

<Window.Background>
    <RadialGradientBrush>
        <GradientStopCollection>
            <GradientStop Offset="0.0" Color="Red"/>
            <GradientStop Offset="0.5" Color="Yellow"/>
            <GradientStop Offset="1.0" Color="Pink"/>
        </GradientStopCollection>
    </RadialGradientBrush>
</Window.Background>

十一、用户控件(UserControl)

11.1 创建用户控件

  • 继承自 UserControl 类。
  • 包含独立的 .xaml 和 .xaml.cs 文件。
  • 可以封装可复用的界面组件。

11.2 使用用户控件

<!-- 引入命名空间 -->
xmlns:uc="clr-namespace:项目名.UserControls"

<uc:UserControl1 Width="250" Height="180"/>

11.3 用户控件示例

<UserControl x:Class="项目名.UserControls.UserControl1" ...>
    <Grid>
        <Border BorderBrush="Red" Background="LightGray" 
                BorderThickness="3" CornerRadius="5">
            <TextBlock Text="用户控件" FontWeight="Bold" FontSize="20"/>
        </Border>
    </Grid>
</UserControl>

十二、事件

12.1 路由事件分类

  1. 直接事件:事件直接由触发事件的元素处理(如 Click)。
  2. 冒泡事件:事件从内层标签向外层标签传播(如 MouseLeftButtonDown)。
  3. 隧道事件:事件从外层标签向内层标签传播(如 PreviewMouseDown)。

12.2 常用事件

// 按钮点击事件
private void Button_Click(object sender, RoutedEventArgs e)
{
    textblock1.Background = new SolidColorBrush(Colors.Green);
}

// 鼠标按下事件
private void Button_MouseDown(object sender, MouseButtonEventArgs e)
{
    Window2 w2 = new Window2();
    w2.ShowDialog();
}

// 选择改变事件
private void listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    MessageBox.Show(listbox.SelectedItem.ToString());
}

// 窗体加载事件
private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // 初始化逻辑
}

十三、颜色与十六进制

13.1 颜色表示

  • 格式:#RRGGBB(红、绿、蓝各 2 位,范围 00-FF)
  • 示例:#007aa4、#636366

13.2 颜色资源

<SolidColorBrush x:Key="s1" Color="#007aa4"/>
<x:Array x:Key="colors" Type="Color">
    <Color>Red</Color>
    <Color>Green</Color>
    <Color>Blue</Color>
</x:Array>

十四、文本装饰

<TextBlock TextDecorations="Strikethrough"> 穿过文本 </TextBlock>
<TextBlock TextDecorations="Underline"> 下划线文本 </TextBlock>
  • TextDecorations 常用值:Strikethrough(删除线)、Underline(下划线)、OverLine(上划线)、Baseline(基线)。

十五、总结对比

知识点关键点
XAML标签即对象,属性即特性,内容区可嵌套
启动方式StartupUri(简单)、Startup事件(灵活)、自定义Main(不推荐)
布局Grid(行列)、StackPanel(堆叠)、DockPanel(停靠)、WrapPanel(自动换行)
样式全局 > 局部 > 行内,支持 BasedOn 继承
资源ResourceDictionary 可合并,支持多种数据类型
绑定{StaticResource} 静态绑定,{Binding} DataContext 绑定
导航NavigationWindow + Page,NavigationService 管理跳转
渐变LinearGradientBrush(线性)、RadialGradientBrush(径向)
用户控件封装可复用的 UI 组件,通过 xmlns 引入
路由事件直接、冒泡、隧道三种事件传播方式
C#WPF入门 1.引言 WPF(Windows Presentation Fundation)是基于windows窗口的用户界面(User Interface)框架,在.NET framework框架下,开发交互图形界面。它支持多种设计方法,可直接使用工具箱拖拽创建控件,也可以通过xmal,cs语言接口设计。 在cs内编辑控件触发事件函数,实现交互算法设计。 本次实验完成简易计算机的ui设计,及其功能实现... 阅读详情

相关推荐

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

所以微软的新技术出来大家都在观望,等个3~5年,确定没啥问题了,配套的生态和组件跟上了,才考虑使用。其实你会发现微软真的是一个技术很超前的公司,他们的想法就是我尽量只让你考虑业务方面的工作,我给你个解决方案,你照着我的框架走就行了。我就是流氓,你不下我的APP软件,我就不给你用。比如画流程图,观看视频,网盘,后台管理,直播平台。手机端就折腾,偏要下个App。我们来看一下大前端的情况,即web端,Windows端,移动端,Linux端。我个人的结论是,Windows桌面端,WPF是最优,最通用的解决方案。

qq_44695769的博客 1946

如何学习 WPF 详细教程

一、WPF 技术介绍 二、学习前的准备工作 三、学习时的具体操作 四、如何巩固学习 五、WPF 知识总结 1、C# 编程语言 2、XAML 标记语言 3、数据绑定 5、动画和转换

不迁怒,不贰过。小知识,大智慧。 1万+

【WPF应用22】WPF 中的 PasswordBox 控件详解

WPF 中的 PasswordBox 控件详解

qq_35320456的博客 4061

C#和WPF入门教程

C# wpf快速入门

weixin_45589116的博客 3万+

C#——WPF控件操作基础

1.WPF简介WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。2.创建WPF程序打开visual studio(我这里用的是2017版本),新建项目,选择V...

Code_BaiYE的博客 4995

【WPF应用19】WPF中的Button控件详解

WPF中的Button控件详解

qq_35320456的博客 6350

C# WPF学习总结

WPF的特点,MVVM,XAML,绑定,触发器,控件,模板,Dispatcher,依赖属性,依赖对象,事件,DevExpress的应用,WPF中ViewModel层弹出新窗口,WPF和WinForm区别,如何在WPF应用程序中全局捕获异常。

qq_38192821的博客 9892

C# winform 调用 WPF用户控件及控件交互

C# winform 调用 WPF用户控件及控件交互

weixin_43623326的博客 2222

C# wpf 嵌入wpf控件

通过前面的章节我们了解到了如何嵌入Hwnd窗口以及WinForm控件,但是嵌入的控件存在覆盖wpf控件的情况,嵌入控件上面无法显示王鹏飞控件,对UI的布局有一定的影响。本文提供一种解决方法,将wpf控件通过HwndHost的方式嵌入到wpf界面中,以实现HwndHost控件上显示wpf控件的功能。因为默认嵌入控件的承载Window使用了AllowsTransparency,如果需要自己定制窗口属性则可以直接使用Window。

codeofcc的博客 2373

C# WPF打造美观自定义按钮样式教程

本文还有配套的精品资源,点击获取 简介:本教程介绍了如何在C# WPF中创建自定义按钮样式以增强用户界面的美观性和交互性。内容包括了解WPF的样式和模板系统,定义按钮的视觉属性和行为,以及如何通过XAML实现渐变背景、图像背景及不同状态下的样式变化。教程逐步引导开发者完成一个漂亮按钮样式的创建,并应用到按钮控件上,从而满足各种设计需求。 1. WPF样式和模板系统概念...

weixin_36431814的博客 3568

WPF控件样式与自定义实践教程

WPF提供了一种方式,允许开发者通过XAML来定义和应用样式。基本样式通过<Style>元素创建,并通过TargetType属性指定它应用于哪种类型的控件。样式中的属性设置会覆盖目标控件的默认属性值,从而改变控件的外观和行为。例如,为Button控件定义一个简单的样式可以这样写:</Style>此样式定义了一个蓝色背景,白色前景的按钮,并将字体大小设置为12。自定义控件是WPF中更深层次的代码重用方法。通过继承现有的控件,开发者可以添加或修改功能以满足特定需求。继承现有控件。

weixin_33205138的博客 685

WPF学习笔记02_样式/模板

WPF(Windows Presentation Foundation)是微软开发的用于构建 Windows 应用程序的框架。它提供了丰富的图形用户界面(GUI)功能,使开发者能够创建具有高度定制化、现代化外观和丰富交互的应用程序。下图是对WPF概念的简单分类和总结。为了方便读者尽可能快速的对WPF相关核心概念有一个大致理解,特意制作了以下思维脑图,方便读者阅读、理解。

zeroCCY的博客 1846

WOL唤醒配置(以太网、PHY、MAC)

MAC 就是以太网控制器,属于OSI的数字链路层。phy 属于OSI的物理层(Physical layer),所以叫phy。CPU Mac与phy通信通过MII接口,数据的传输通过MDIO数据线。通过配置phy的相关寄存器实现不同的功能。

qq_58264156的博客 8632

C# WPF DataGrid控件的详细介绍和推荐一些样式设计

前面介绍过使用DataGrid简单绑定一个数据模型,接着介绍DataGrid的一些详细操作。 参考:C# WPF DataGrid的使用 定制DataGrid控件基本外观属性 RowBackground、AlternatingRowBackground:用于绘制每行背景的画刷(RowBackground),并且决定是否使用不同的背景颜色绘制交替行。在默认情况下,DataGrid控件为奇数行提供白色...

weixin_42974146的博客 7335

cellchat安装

cellchat

m0_65188455的博客 5448

雷达仿真:FMCW TDMA-MIMO 3D点云获取方法

2 信号建模摘要:通过设置时分复用(TDMA)波形结合FMCW毫米波雷达仿真获取目标的距离、速度和方位角3D点云信息。在本案例中,首先通过发射天线交替发射FMCW波形并通过接收天线依次接收回波信号从而得到雷达原始数据,其次对获取的原始数据依次经行距离、速度、角度估计从而输出目标的3D点云。阅读本文档,你将对TDMA-MIMO雷达的基本原理、毫米波雷达距离估计、速度估计以及角度估计的基本原理有所了解,另外CA-CFAR恒虚警以及MUSIC-DOA估计在本案例中也有所涉及。1 TDMA-MIMO原理。

Poulen的博客 6960

C#之WPF样式的使用

C#样式的使用,添加自定义样式需对控件的属性相对熟悉,且需要对样式引用的格式熟悉(wpf对自定义样式中控件属性不给出提示,需自己写)。 下面是对StackPanel板式添加的自定义按钮样式

J.Anson的博客 1711

Geoserver新手必看:5分钟搞定世界地图发布(附中国省市数据)

本文为Geoserver新手提供了快速发布世界地图的实战指南。从环境搭建、数据准备入手,详细讲解了如何创建工作区、添加数据存储、发布图层及配置关键参数,并最终通过创建图层组实现地图服务的整合与预览。文章旨在帮助用户快速掌握Geoserver发布地图服务的核心流程与实用技巧。

cola5的博客 223

C# WPF入门学习主线篇(二十)—— 资源和样式

在《C# WPF入门学习主线篇(二十)—— 资源和样式》这篇文章中,我们详细介绍了WPF中的资源和样式。本文涵盖了静态资源和动态资源的定义与使用,以及如何通过样式实现控件的视觉统一和代码重用。通过具体的代码示例,读者可以学会在实际开发中灵活运用资源和样式,提高应用程序的可维护性和美观性。

weixin_56595425的博客 2017

ESP8266入门(一)固件烧录及常见问题分析

为了实现对数据的远程收集和分析,偶然间发现了esp8266这个模块,对此进行了深入的学习,可是在学习之初遇到了大量的问题,这个系列文章就为大家讲讲我遇到的坑以及解决办法,还有esp8266如何连上oneNet云平台的方法。因为我用的是esp8266nodemcu,可以直接连接usb进行烧录,如果用模块的话接线就比较麻烦,可以去搜搜看.

Jerryxuzherui的博客 8955

SAP_SD模块信用管理-最早未清项判断逾期

在 SAP SD 模块的信用管理(Credit Management) 中,系统可以通过 最早未清项(Oldest Open Item) 来判断客户是否存在逾期,从而影响订单的信用检查结果。例如: 定义最大未清项目%为1%,未清天数为1天,即允许客户“逾期1天的未清应收帐款/该客户的应收帐款余额”最大比例为1%,若超过1%则将被信用冻结。的信用检查功能,用于判断客户是否有账龄过长的未清款项,并据此决定是否允许新的销售订单继续处理。然后在查看客户的信贷信息可以看到,最早的未清信息显示在系统中。

我小时候很黑的博客 863

C# WPF编程-控件

在WPF领域,控件通常被描述为与用户交互的元素,能接收焦点并接受键盘或鼠标输入的元素。

若有博文对您有帮助,欢迎点赞关注,收藏评论。 2863

1.07---共识机制详解(PoW、PoS、DPoS 对比)

【摘要】区块链能成为“无需信任的协作网络”,靠的正是它的“共识机制”。本节将深入剖析 PoW、PoS、DPoS 等核心共识模型,并结合以太坊从 PoW 到 PoS 的转型与 Solana 等新型方案,为你拆解这一决定区块链运行方式、性能、安全性的“发动机系统”。什么是共识机制?为何不是多数投票这么简单?三大主流共识算法(PoW、PoS、DPoS)机制对比与演化路线以太坊从 PoW 到 PoS 的转型细节(The Merge)Solana 的 PoH + PoS 混合共识机制解析。

鄙人kunzhi96,感恩遇见! 1万+

【WPF应用42】WPF中的 GroupBox 控件详解

WPF中的 GroupBox 控件详解

qq_35320456的博客 5743

嵌入式SDIO 总线面试题及参考答案

SDIO 的 4 位总线模式是一种提高数据传输效率的工作模式。在传统的 1 位总线模式下,数据只能通过一根数据线(DAT0)进行传输,这限制了数据传输的带宽和速度。而在 4 位总线模式下,DAT0 - DAT3 这 4 根数据线同时用于数据传输,相当于在同一时间内可以传输 4 倍于 1 位模式的数据量,从而显著提高了数据传输的带宽和速度。要通过 CMD6 命令将 SDIO 总线从当前模式切换到 4 位总线模式,需要遵循以下步骤:第一步,主设备需要确保 SDIO 卡支持 4 位总线模式。

大模型大数据攻城狮的专栏 1719

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

C# WPF开发基本控件

WPF中常见控件的使用方法与注意事项

可喜~可乐的博客 1130

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: c#软件开发学习笔记--TCP 粘包拆包、SqlSugar 框架
下一篇: c#软件开发学习笔记--WPF(控件、变换、触发器、控件模板)
Z599817841
博客等级 码龄4年 12粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值