WPF_2

事件处理器与代码后置

以下就是新建了一个事件Click,事件拥有者为Button

cs 复制代码
 <Button Width="120"Height="30" Content="Click Me!" Click="Button_Click"/>

以这个来作为事件处理器,响应者是窗体,事件订阅是 Click="Button_Click"。

cs 复制代码
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     MessageBox.Show("Hello WPF");
 }

事件订阅也可以这样:

cs 复制代码
public MainWindow()
{
    InitializeComponent();
    this.Button_Click += new RoutedEventHandler(Button_Click);
}

导入程序集与引入其中的名称空间

现在流行程序分为几个小组件,这些小组件可以被其他项目引用和共享。

下方代码功能是:为员工计算每个月的工资,而且该计算工资功能是组件的形式,可以在程序其他地方显式或引用。

想在另一个程序集中生成一个组件。然后在该程序集中引用。

在解决方案中新建一个用户控件库如下:

删除自带的xaml,

自己添加一个SalaryCaluculator.xaml用户控件,用于计算工资

在自定义的SalaryCaluculator.xaml中内容写成如下:

cs 复制代码
<UserControl x:Class="WpfControlLibrary1.SalaryCalculator"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="240" Height="160" Background="LightBlue">

    <Canvas>
        <Label Content="基本工资:" Canvas.Left="18" Canvas.Top="16" Name="label1"/>
        <Label Content="岗位工资:" Canvas.Left="18" Canvas.Top="66" HorizontalAlignment="Center" VerticalAlignment="Top" Name="label2"/>
        <Label Content="实际工资:" Canvas.Left="18" Canvas.Top="41" HorizontalAlignment="Center" VerticalAlignment="Top" Name="label3"/>
        <TextBox Canvas.Left="93" TextWrapping="Wrap" x:Name="TextBox1" Canvas.Top="20" Width="120"/>
        <TextBox Canvas.Left="93" TextWrapping="Wrap" x:Name="TextBox2" Canvas.Top="45" Width="120"/>
        <TextBox Canvas.Left="93" TextWrapping="Wrap" x:Name="TextBox3" Canvas.Top="71" Width="120"/>
        <Button Content="计算" Canvas.Left="93" Canvas.Top="117" HorizontalAlignment="Left" VerticalAlignment="Center" Width="120" Click="Button_Click"/>
    </Canvas>
</UserControl>

在上方button中添加如下响应:

cs 复制代码
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     this.TextBox3.Text=this.TextBox2.Text+this.TextBox1.Text;//实际工资为前两者和
 }

会得到如上一个控件,那么如何在主程序中使用:

①将主界面分为4部分:

cs 复制代码
 <Grid>
     <Grid.RowDefinitions>
         <RowDefinition/>
         <RowDefinition/>//将界面上下两半
     </Grid.RowDefinitions>
     
     <Grid.ColumnDefinitions>
         <ColumnDefinition/>
         <ColumnDefinition/>//将界面分成作用两界面
     </Grid.ColumnDefinitions>
 </Grid>

现在想在4个部分都加上控件:

②给主程序添加自定义控件的依赖,然后用xmlns引用:

主程序中添加(目的是引入名称空间):

cs 复制代码
xmlns:control="clr-namespace:WpfControlLibrary1;assembly=WpfControlLibrary1"

然后就在Grid中可以引用了,写如下四行代码引用,就欧克了

通过以上学习可知,想用一个控件,首先是要引用它所在的类库,然后用xmlns引用类库中的名称空间,才能使用控件。一般用自带的类库时,xmlns后跟的是http......,这种可以一下引用多个名称空间。

cs 复制代码
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

XAML的注释

注释格式

cs 复制代码
<!--
注释内容
-->

①图标方式注释:

选中要注释的内容,再点如下:

该图标后边的 图标可以用来解注释。

②同时按住Crtl+K+C进行注释,同时按住Crtl+K+U进行解开注释

③自定义快捷键,点击工具,点击键盘,点击需要更改命令的快捷键

相关推荐
Chris _data16 天前
WPF 学习第三天 — Modbus RTU 串口通信
hadoop·学习·wpf
布吉岛的石头17 天前
Java 程序员第 43 阶段05:微服务整合大模型,跨服务调用架构设计实战,Seata分布式事务实战
wpf
步步为营DotNet17 天前
基于.NET Aspire 实现云原生应用的高效监控与可观测性
云原生·.net·wpf
芒鸽17 天前
HarmonyOS 分布式开发实战:设备协同、数据共享与跨设备迁移
分布式·wpf·harmonyos
Volunteer Technology17 天前
Flink状态管理与容错(二)
大数据·flink·wpf
happyprince18 天前
07_verl-Trainer模块详解
人工智能·架构·wpf·强化学习
bugcome_com18 天前
WPF + Prism 技术指南与实战项目(二、模板搭建)
wpf
小满Autumn18 天前
log4net 日志框架 — 从配置到实战速查手册
笔记·c#·.net·wpf·上位机·log4net
政沅同学19 天前
基于 C# WPF + HALCON 的工业视觉算法工具框架(开源)
开发语言·c#·wpf
happyprince19 天前
03_verl-设计理念与核心原理
wpf