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. 导入程序集和引用其中的名称空间 

  • 相关阅读:
    poj 2479
    纯CSS实现小圆点和三角形图案
    HDOJ1084 What Is Your Grade?
    4星|《一世富贵》:穿越到宋朝去抢了狄青、范仲淹的风头
    世界不是平的,发达国家在本地生产越来越合算。观点宏大,证据薄弱:3星|《后全球化时代》
    饥饿疗法是目前唯一确信能够延缓衰老的办法:4星|《三联生活周刊》2018年3期
    4星|《重塑》:消费者的信息能力是一个重要的经济变量。新颖的、有见地的国人原创经济理论
    3星|《高情商谈判》:谈判中控制情绪非常重要
    中间商赚差价让世界更美好:3.5星|《中间人经济》
    3.5星|《新零售的未来》:中美两国零售业的现状的分析和未来的展望
  • 原文地址:https://www.cnblogs.com/haosit/p/8882535.html
Copyright © 2011-2022 走看看