zoukankan      html  css  js  c++  java
  • WPF 入门笔记之基础

    一、创建WPF程序

    1. App.xaml 相当于窗体的配置文件

    2. xmlns:xml名称空间的缩写

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"<!--表示引入一组名称空间,presentation主要加载绘制界面相关的-->

    3. xmlns:x:多个x表示名称空间的名字

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"<!--xaml编译和解析文件相关的。WPF默认可以有一个没有名称的名称空间.(默认名称空间)-->

    4. x:Class="MyWpfApp.MainWindow" 对应的是,这个xmal文件对应的xmal.cs文件中的MainWindow类

    x:Class="MyWpfApp.MainWindow"<!--对应的是,这个xmal文件对应的xmal.cs文件中的MainWindow类-->

    二、用户界面和赋值

    1. 树形结构布局,引用自己的类

    xmlns:local="clr-namespace:MyWpfApp"<!--引用当前的名称空间-->
    namespace MyWpfApp
    {
        public class CurrentData
        {
            public CurrentData Data { get; set; }
    
            public string Name { get; set; }
        }
    }

    在XAML中使用

    <Window.Resources>
         <local:CurrentData x:Key="test" Name=""/>
    </Window.Resources>

    2. Attribute=“Value”方式只能使用简单的字符串赋值,赋值的类型赋值不方便

    <Grid>
       <Rectangle Height="80" Width="100" Stroke="Black"/>
    </Grid>

    2.1 非字符串类型赋值

    <Window.Resources>
          <local:CurrentData x:Key="text" Name="t" Data="aaa" />
    </Window.Resources>

    首选创建一个配,继承于TypeConverter类来自于(System.ComponentModel),重写ConverterFrom 方法

    第二用属性的形式标记在自定义类上

        //第二步
    [TypeConverterAttribute(typeof(NameToDataTypeConverter))] public class CurrentData { public CurrentData Data { get; set; } public string Name { get; set; } } //第一步 public class NameToDataTypeConverter : TypeConverter { public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { string name = value.ToString(); CurrentData data = new CurrentData() { Name = name }; return data; } }

    3. 属性方式赋值,例如button

    <Grid>
            <!--这种用‘/’直接结尾的,叫做空标签。这个标签不具有内容-->
            <Button Height="80" Width="200" Click="Button_Click1" />
            <Button Height="80" Width="200" Click="Button_Click">
                <!--标签的内容-->
                <Button.Content>
                    <!--属性的方式赋值-->
                    <Rectangle Width="20" Height="20" Stroke="Black" Fill="Green"></Rectangle>
                </Button.Content>
            </Button>
    </Grid>

    4. 标签扩展的方式赋值

        <Window.Resources>
            <sys:String x:Key="stringvalue">string value</sys:String>
        </Window.Resources>
        <Grid>
            <!--{}大括号表示使用标签扩展-->
            <TextBlock Height="100" Text="{StaticResource ResourceKey=stringvalue}"></TextBlock>
        </Grid>

    三、事件处理器,代码后置,导入程序集和引用命名空间

    1.事件基本模型

        <Grid>
            <Button Height="20" Name="button" Width="200" Content="button" Click="Button_Click"></Button>
        </Grid>
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void Button_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("");
            }
        }
    <Button>:事件的拥有者.
    Click="Button_Click":事件订阅
    MainWindow:窗体是事件的响应者
    private void Button_Click(object sender, RoutedEventArgs e):事件的处理器

     事件的订阅可以用C#代码实现

            public MainWindow()
            {
                InitializeComponent();
                this.button.Click += Button_Click;
            }

    2. 导入程序集和引用其中的名称空间 

  • 相关阅读:
    中途接手一个项目时候,需要注意
    PPT做交互效果
    hyperledger学习资料
    k8s拾遗
    Day0-3. 部署docker镜像私有仓库harbor
    Day0-2. Docker安装部署
    Day0-1. Docker环境准备
    【转载】轻量级HTTP服务器Nginx(Nginx性能优化技巧)
    使用nginx-module-vts监控各虚拟主机的流量
    Linux系统下终端proxy代理配置
  • 原文地址:https://www.cnblogs.com/haosit/p/8882535.html
Copyright © 2011-2022 走看看