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进行解开注释

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

相关推荐
LateFrames7 小时前
520 - 如何说晚安 (WPF)
c#·wpf·浪漫·ui体验
heimeiyingwang18 小时前
【架构实战】日志体系ELK:集中化日志管理实践
elk·架构·wpf
CPU不够了19 小时前
WPF 多选下拉+搜索过滤_wpf下拉选项增加搜索
wpf
FuckPatience19 小时前
WPF 列表控件自动拉伸子元素的宽度
wpf
LCG元19 小时前
【Go后端开发】从 0 到生产级:高性能分布式网关全实现 + 接口限流熔断降级实战
分布式·golang·wpf
枫叶林FYL1 天前
项目九:异步高性能爬虫与数据采集中枢 —— 基于 Crawl<sub>4</sub>AI 与 Playwright 的现代化数据采集平台 项目总览
爬虫·python·深度学习·wpf
她说彩礼65万2 天前
WPF 多值转换器
wpf
无心水2 天前
【分布式利器:金融级】金融级分布式架构开源框架全景解读
人工智能·分布式·金融·架构·开源·wpf·金融级框架
她说彩礼65万2 天前
WPF 转换器
wpf
WPF工业上位机2 天前
匠心研智造,同心赴新程-WPF硬件通讯之串口&Socket
wpf