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

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

相关推荐
Java Fans13 小时前
在WPF项目中集成Python:Python.NET深度实战指南
python·.net·wpf
布伦鸽20 小时前
C# WPF 左右布局实现学习笔记(1)
笔记·学习·c#·wpf
code bean2 天前
【WPF】WPF 项目实战:构建一个可增删、排序的光源类型管理界面(含源码)
wpf
沉到海底去吧Go2 天前
【图片识别改名】如何批量将图片按图片上文字重命名?自动批量识别图片文字并命名,基于图片文字内容改名,WPF和京东ocr识别的解决方案
ocr·wpf·图片识别改名·图片识别重命名·图片内容改名
lph19722 天前
自定义事件wpf
wpf
code bean2 天前
【WPF】从普通 ItemsControl 到支持筛选的 ItemsControl:深入掌握 CollectionViewSource 用法
wpf
碎碎念的安静3 天前
WPF可拖拽ListView
c#·wpf
界面开发小八哥3 天前
界面组件DevExpress WPF中文教程:Grid - 如何识别行和卡片?
.net·wpf·界面控件·devexpress·ui开发
TwilightLemon4 天前
WPF 使用CompositionTarget.Rendering实现平滑流畅滚动的ScrollViewer,支持滚轮、触控板、触摸屏和笔
wpf
Vae_Mars6 天前
WPF中自定义消息弹窗
wpf