WPF学习

一、了解WPF的框架结构

(第一小节随便看下就可以,简单练习就行)

1、新建WPF项目

 

xmlns:XML的命名空间 

 Margin外边距:左上右下

HorizontalAlignment:水平位置

VerticalAlignment:垂直位置

 2、Border的使用

效果:

3、LoginWindow窗口

在Wpf中不是所有的标签都有Name属性,但是一定有x:Name,x:Name为了保证所有标签的唯一性 

PasswordBox是密码框

winform中窗体的加载事件:Load,WPF中窗体的加载事件是Loaded

代码:

LoginWindow.xaml的代码

<Window x:Class="WpfApp1.LoginWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="LoginWindow" Height="450" Width="800" Loaded="Window_Loaded">
    <Border BorderBrush="Green" BorderThickness="3" CornerRadius="10">
        <!--BorderBrush:边框的颜色  BorderThickness:边框的厚度/粗细  CornerRadius:边框四个角的半径-->
        <Grid>
        <TextBlock HorizontalAlignment="Left" Margin="213,150,0,0" TextWrapping="Wrap" Text="账号" VerticalAlignment="Top"/>
        <TextBlock HorizontalAlignment="Left" Margin="213,200,0,0" TextWrapping="Wrap" Text="密码" VerticalAlignment="Top" RenderTransformOrigin="-0.067,-2.57"/>
        <TextBox Name="txtUserCount" HorizontalAlignment="Left" Height="23" Margin="306,149,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="208"/>
            <Button  Name="btnLogin" Content="登录" HorizontalAlignment="Left" Margin="230,268,0,0" VerticalAlignment="Top" Width="75" Click="BtnLogin_Click"/>
        <Button Name="btnClose" Content="关闭" HorizontalAlignment="Left" Margin="351,267,0,0" VerticalAlignment="Top" Width="75"/>
            <PasswordBox x:Name="txtUserPwd" HorizontalAlignment="Left" Margin="306,200,0,0" VerticalAlignment="Top" Width="208" Height="23"/>
            <DataGrid HorizontalAlignment="Left" Height="100" Margin="372,430,0,-115.6" VerticalAlignment="Top" Width="100"/>
            <!--在Wpf中不是所有的标签都有Name属性,但是一定有x:Name,x:Name为了保证所有标签的唯一性-->
        </Grid>
    </Border>
</Window>

 LoginWindow.xaml.cs的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// <summary>
    /// LoginWindow.xaml 的交互逻辑
    /// </summary>
    public partial class LoginWindow : Window
    {
        public LoginWindow()
        {
            InitializeComponent();
        }

        private void BtnLogin_Click(object sender, RoutedEventArgs e)
        {
            string userAccount = txtUserCount.Text;
            string userPwd = txtUserPwd.Password;
            //this.txtUserPwd.SecurePassword;//加密字符串,保存成内存地址
            MainWindow mainWindow = new MainWindow();
            mainWindow.Show();
            this.Close();
        }
        /// <summary>
        /// 窗体加载事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {

        }
    }
}

效果图:

4、文本框旋转

选中文本框,鼠标放到文本框的四个角的任意一个边上,然后旋转即可

 默认的文本框有如下属性:

旋转后的文本框:

 5、关闭主窗体,其他窗体不关

MainWindow界面:

 MainWindow.xaml代码:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <TextBox HorizontalAlignment="Left" Height="23" Margin="311,163,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.5,0.5">
           <!--transform:使改变、使转换 render:提供 scale:天平 skew:歪曲 rotate:旋转 translate:翻译、转变、变为-->
            <TextBox.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="25.259"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBox.RenderTransform>
        </TextBox>
        <Button Content="返回" HorizontalAlignment="Left" Margin="318,288,0,0" VerticalAlignment="Top" Width="116" Height="41" Click="Button_Click"/>
        <Button x:Name="btnClose" Content="关闭" HorizontalAlignment="Left" Margin="562,288,0,0" VerticalAlignment="Top" Width="137" Height="41" Click="BtnClose_Click"/>
        <TextBox HorizontalAlignment="Left" Height="23" Margin="81,158,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120" RenderTransformOrigin="0.5,0.5">
            <TextBox.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="16.461"/>
                    <TranslateTransform/>
                </TransformGroup>
            </TextBox.RenderTransform>
        </TextBox>
    </Grid>
</Window>

 MainWindow.xaml.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApp1
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        //返回按钮
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            LoginWindow loginWindow = new LoginWindow();
            loginWindow.Show();
            this.Close();
        }
        //关闭按钮
        private void BtnClose_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();//关闭应用程序,杀死进程
            
        }
    }
}

二、WPF常用基础控件结构和应用

1、checkBox

要求:获取选中的值

CheckBoxWindow.xaml:

拖入三个checkBox、一个button按钮放入window窗口中,并且设置好Name属性的值

<CheckBox Name="chkHoppy1" Content="乒乓球" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="50.2,106,0,0" VerticalAlignment="Top"/>
<CheckBox  Name="chkHoppy2" Content="羽毛球"  Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="135.2,106,0,0" VerticalAlignment="Top"/>
<CheckBox  Name="chkHoppy3" Content="篮球" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="213.2,106,0,0" VerticalAlignment="Top"/>
<Button x:Name="btnRead" Content="读取" HorizontalAlignment="Left"  Width="75" Click="BtnRead_Click"/>

 button按钮的点击事件:

 效果图:

2、 radioButton

​​​​​​​

radioButton的取值:

给容器定义行、列,如下图:两行两列 

 代码:

<Window x:Class="WpfApp1.CheckBoxWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d"
        Title="CheckBoxWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <CheckBox Name="chkHoppy1" Content="乒乓球" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="50.2,106,0,0" VerticalAlignment="Top"/>
        <CheckBox  Name="chkHoppy2" Content="羽毛球"  Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="135.2,106,0,0" VerticalAlignment="Top"/>
        <CheckBox  Name="chkHoppy3" Content="篮球" Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left" Margin="213.2,106,0,0" VerticalAlignment="Top"/>
        <Button x:Name="btnRead" Content="读取" HorizontalAlignment="Left"  Width="75" Click="BtnRead_Click"/>
        
        <RadioButton Name="boy" GroupName="sex" Content="男"  Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" />
        <RadioButton Name="girl" GroupName="sex" Content="女" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" Margin="36.2,0.4,0,0" />
        
        <RadioButton Content="已婚" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top"/>
        <RadioButton Content="未婚" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="61,0.4,0,0"/>
        <Button x:Name="btnOK" Content="确定" Grid.Column="1" HorizontalAlignment="Left" Margin="312.2,170.4,0,0" Grid.Row="1" VerticalAlignment="Top" Width="75" Click="BtnOK_Click"/>
       

    </Grid>
</Window>

3、ComboBox

手动绑定:

获取选中内容:

数据源绑定:

需要设置DisplayMemberPath和SelectedValuePath

 

 

4、Listbox

可以手动绑定也可以动态绑定

数据源绑定:

 选中值发生改变时:用到的事件是SelectionChanged

 

三、StockPanel堆栈面板,WrapPanel流布局面板

1、StackPanel

 

 

 

四、DockPanel停靠面板,Canvas坐标面板

五、复杂的Grid表格容器面板

六、直接_冒泡_隧道路由事件、InkCanvas面板

七、ListView数据控件(带右键菜单)

八、Animation动画制作类,声音合成器(类)

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值