wpf学习笔记二 深入学习 xaml

1、XAML 主要用于绘制UI界面,最大的优点是能使UI与运行逻辑分离开来,使得整个程序回到逻辑处理上来。

   每一个标签对应.NET Framework类库的一个控件类。通过设置标签的Attribute,不仅可以对标签所对应的控件    对象Property进行赋值,还可以声明名称空间,指定类名等

2、使用attribute给对象的属性赋值

   XAML是一种声明性语言,XAML编译器会为每个标签创建一个与之对应的对象,之后要对他的属性进行初始化    才会有意义。所以,每个标签除了声明对象就是初始化对象的属性--即给其属性赋值。赋值方法有两种:一种    是字符串简单赋值(在XAML中赋值),另外一种是使用属性元素进行复杂赋值(在.cs里面赋值)。下面的   例子用xaml赋值,

    1)前台代码:

<Window x:Class="firstApplicaton.Window1"    

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    

Title="Window1" Height="300" Width="300">    

<Grid>        

<Grid.ColumnDefinitions>            

   <ColumnDefinition Width="*"/>            

  <ColumnDefinition Width="120"/>        

</Grid.ColumnDefinitions>        

<Grid.RowDefinitions>            

   <RowDefinition Height="100"/>            

   <RowDefinition Height="*"/>        

</Grid.RowDefinitions>                 

   <Button x:Name="button1" Content="按钮1" Width="80"  Height="20" Grid.Column="0" 

     Grid.Row="0" Background="Blue" />         

   <Button x:Name="button2" Content="按钮2" Width="80" Height="20" Grid.Column="1"           

     Grid.Row="1"  Background="Fuchsia"/>        

  <Rectangle x:Name="正方形1"  Width="80" Height=" 80" Grid.Column="0" Grid.Row="1"          

     Fill="Red"/>    

</Grid> </Window>

                          

      2)后台代码修改button 跟rectangle 的 填充色跟 背景颜色

       

using System;

using System.Collections.Generic;

using System.Linq; using System.Text;

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 firstApplicaton

{   

  /// <summary>     /// Window1.xaml 的交互逻辑     /// </summary>    

public partial class Window1 : Window   

  {        

     public Window1()        

      {            

         InitializeComponent();            

            //修改rectangle的填充色           

               SolidColorBrush scb = new SolidColorBrush();   

                scb.Color = Colors.Green;

                 this.rec.Fill = scb; 

            //修改button的背景色

               this.button1.Background = scb;

              this.button2.Background = scb;

        }  

    }

}           

                             
3、TypeConvert类将XAML标签的Attribute与对象的Property进行映射

  1)TypeConvert: 提供一种将值类型转换为其他类型的统一方式。 TypeConverter 通常支持字符串到对象的

                  转换,目的是供设计环境中的属性编辑器使用或者是为了能够使用 XAML

                                   在xaml 语法中,元素英文就attribute value值都是sring类型的 但是 在相印的property却不都是

                                   string,为了能达到attribute与property的一一对应及相互操作 那就需要用上面的这个

                                    typeconvert类进行数据类型的转换。

      下面这个例子 自定义一个类 class1 在里面有两个属性,一个是name 另一个是 subclass ,在一下代码中可以看到subclass是class1类型的属性,但是在 xaml中属性却是string  现在问题来了  我们怎么能在。cs文件中把sting转换成 class1类型呢  这个时候就用到了 typeConvert  用他去重写 convertFrom 方法 来实现。

   2)xaml源码

<Window x:Class="firstApplicaton.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:a="clr-namespace:firstApplicaton"

    Title="Window1" Height="300" Width="300">

       <Window.Resources>

        <a:class1 x:Key="class1" Name="1" subclass="class2">

        </a:class1>

    </Window.Resources>

    <Grid>

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="*"/>

            <ColumnDefinition Width="120"/>

        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>

            <RowDefinition Height="100"/>

            <RowDefinition Height="*"/>

        </Grid.RowDefinitions>

                 <Button x:Name="button1" Content="按钮1" Width="80"  Height="20" Grid.Column="0" Grid.Row="0" Background="Blue" Click="button1_Click" />

                 <Button x:Name="button2" Content="按钮2" Width="80" Height="20" Grid.Column="1" Grid.Row="1"  Background="Fuchsia"/>

                <Rectangle x:Name="rec"  Width="80" Height=" 80" Grid.Column="0" Grid.Row="1" Fill="Red"/>

    </Grid> </Window>

3)cs源码

 

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

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;

using System.ComponentModel;

 

namespace firstApplicaton

{    

/// <summary>     /// Window1.xaml 的交互逻辑     /// </summary>

    public partial class Window1 : Window

    {

        public Window1()

        {

            InitializeComponent();

            //修改rectangle的填充色

            SolidColorBrush scb = new SolidColorBrush();

            scb.Color = Colors.Green;

            this.rec.Fill = scb;

            //修改button的背景色

            this.button1.Background = scb;

            this.button2.Background = scb;

 

        }

 

        private void button1_Click(object sender, RoutedEventArgs e)

        {

             class1  c =( class1) this.FindResource("class1");

 

            MessageBox.Show(c.subclass.Name);

 

                   }

    }

    // 先托管 数据转换的类

    [TypeConverter(typeof(StringToClass1TypeConverter))]

    //目标类

    public class  class1

    {

        public string Name { get;set;}

        public class1 subclass{get;set;}

    }    

//重写数据类型转换 在默认的数据类型转换中会自动转换

    public class StringToCass1TypeConverter : TypeConverter    

{

 

        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)

        {

 

            if (value is string)

            {

 

               class1 c = new class1();

 

                h.Name = value as string;

 

                return c;

 

            }

 

            return base.ConvertFrom(context, culture, value);

 

        }

 

    }

}

转载于:https://www.cnblogs.com/happygod/archive/2013/01/29/wpf.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433928.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cortex a7 a53_小号“A7”终于亮相,配4米9车长 大溜背!堪称15万内最强颜值!

原标题&#xff1a;小号“A7”终于亮相&#xff0c;配4米9车长 大溜背&#xff01;堪称15万内最强颜值&#xff01;今天来推荐一款b级轿车&#xff0c;大家都知道现在国内热度最高的就上suv车型了&#xff0c;但是销量最高的车型依旧还是轿车车型&#xff0c;因为轿车车型的粉丝…

C语言数据结构迷宫实验报告,数据结构c语言课程设计报告之迷宫

数据结构c语言课程设计报告之迷宫 C语言与数据结构课程设计报告学 号 ** 姓 名 ** 课程设计题目 迷 宫 求 解 2012 年 5 月目 录1 需求分析 1.1 功能与数据需求 1.1.1 题目要求的功能 1.1.2 扩展功能 1.2 界面需求 1.3 开发环境与运行需求 2 概要设计 2.1主要数据结构2.2程序总…

unicode字符大全可复制_说说Excel不可见字符的那些事

今天小伙伴问了个问题看上去啥也没有&#xff0c;为什么黏贴到记事本上前面那么多空白呢&#xff1f;典型的不可见字符惹出来的麻烦&#xff0c;这个往往是公司软件导出数据造成的我们今天就来细说说不可见字符的那些事拿上面的例子说明大部分不可见字符&#xff0c;这一步就能…

删除后别人的微信号变成wxid_微信偷偷更新:终于能改微信号,每年改一次

跟微信打交道多年&#xff0c;机哥可以说是六号线最熟知微信套路的人。比如&#xff0c;微信最喜欢在临近周末的时候&#xff0c;来一波悄悄更新。。难不倒我&#xff01;微信新动态&#xff0c;几乎每次都被机哥妙手抓住。掐指一算&#xff0c;今天周五。安卓版微信 7.0.15 更…

android设置多个按钮,android代码中设置两个按钮之间位置

package com.example.helloworld01;//包名import java.util.ArrayList;import java.util.List;import android.os.Bundle;import android.app.Activity;import android.graphics.Color;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget…

cad管线交叉怎么画_高效设计!多种方式进行管线连接、伸缩

节点连接就是需要把一些节点连接起来&#xff0c;需要通过拖拽把他连接起来&#xff0c;类似CAD的延伸。管立得中的节点连接是可以创建他们的连接关系的&#xff0c;会进行管道的联动。下面是使用管线连接功能进行连接节点&#xff0c;以及管道伸缩的的操作方式。一、管线连接1…

pp助手苹果版_生日助手时间管理软件免费版下载-生日助手倒计时app苹果版下载ios...

生日助手app是一款全新的时间管理软件&#xff0c;帮助你更好的进行时间管理快乐生活&#xff0c;能够帮助你准确提醒你想要设定的重要日子&#xff0c;app的功能服务支持除了日历以外&#xff0c;还有计算器、天气预报、倒计时还有星座等&#xff0c;非常实用哟。app能够帮助用…

Handler post用法整理

来自:http://www.eoeandroid.com/forum.php?modviewthread&tid197324 感谢原作者. /** 在这个demo中&#xff0c;整个过程如下&#xff1a;程序一启动&#xff0c;就把MyRunnable加入到消息队列中&#xff0c;android的handler是异步机制&#xff0c;所以在handler.post(n…

zabbix华为交换机模板_【教程】思科交换机镜像端口配置实例

关注我&#xff0c;你的眼睛会怀孕镜像口就是把思科交换机上的其他口的数据流量全部转到一个口或者两个口上&#xff0c;通常被用作排查问题或者获取数据流量。下面简单介绍下怎么配置源目的镜像口吧。1、使用telnet或者ssh连接到交换机上&#xff0c;可以使用连接工具&#xf…

linux中死锁的概念,【Linux】死锁概念总结

什么是死锁如果一组进程(或者线程)中的所有进程(或者线程)都在等待该组中其他进程(或者线程)才能引发的事件&#xff0c;那么这组进程(或者线程)就是死锁的死锁出现的情况举例(1)线程自锁&#xff0c;自己将自己锁住当进程(线程)第一次访问一个资源时&#xff0c;对该资源进行加…

revo uninstaller pro 序列号_iPhone12/pro已下架,在天猫

苹果10月份发布的首款5G版iPhone手机iPhone12系列手机一共有四款不同的型号分别为iPhone12 mini&#xff0c;iPhone12&#xff0c;iPhone12 Pro以及iPhone12 Promax。其中iPhone12以及iPhone12 Pro已经正式开始发售了&#xff0c;作为首款5G版iPhone手机&#xff0c;iPhone12系…

大话数据结构文摘

第1章 数据结构绪论 程序设计数据结构算法 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合 1.逻辑结构 &#xff1a;是指数据对象中数据元素之间的相互关系 a&#xff1a;集合结构 b&#xff1a;线性结构 c&#xff1a;树形结构 d&#xff1a;图形结构 2.物理结…

vue打包代码反编译_Android逆向反编译代码注入APK过程思路分析

一、名称解释逆向 - 是一种产品设计技术再现过程&#xff0c;从可运行的程序系统出发&#xff0c;运用解 密、反汇编、系统分析等多种计算机技术&#xff0c;对软件的结构、流程、算法、 代码等进行逆向拆解和分析&#xff0c;推导出软件产品的源代码、设计原理、结构、 算法、…

android 好玩的ui,让安卓更好玩 这些Launchers值得拥有

【手机中国新闻】如果你对Android的布局和界面越来越厌倦&#xff0c;那么是时候安装一个新的启动程序了。Launchers可以让你定制带有主题和图标包的智能手机&#xff0c;还可以在切换屏幕、启动应用程序等操作时&#xff0c;几乎完全控制手机的性能。以下是安卓智能手机或平板…

微星主板rgb_虽然这块主板价格有点小贵,但用过之后,感觉还是可以接受的

其实这块主板并不算贵&#xff0c;但它与其它型号&#xff0c;其它品牌的丐中丐主板相比&#xff0c;的确要贵好二、三百多元。对于有些用户而言&#xff0c;贵这几百元&#xff0c;完全就是一种赤裸裸的抢钱行为&#xff0c;所以早就在心里打上了“不值”的标签。能用丐中丐的…

三层架构学习的困难_“网工起航计划”3天集训营 带你了解大型企业网络架构设计!...

点击蓝字关注我们网工起航计划3天集训营 带你了解大型企业网络架构设计开营时间&#xff1a;8月26日晚8点DAY1&#xff1a;企业园区网二层架构冗余设计实战 时间:8月26日20:00-21:301、网络通信过程详细解析2、交换机工作原理详解3、企业园区网二层架构冗余设计涉及技术点&a…

mvn 汇编_2020年简单的早安共勉句子短信汇编58条

2020年简单的早安共勉句子短信汇编58条爱情&#xff0c;就像两个人在拉猴皮筋&#xff0c;疼的永远是后撒手的那个。早安&#xff01;以下是小编为大家推荐的早安共勉句子58条,欢迎大家借鉴与参考&#xff0c;希望对大家有所帮助。1、这地球少了谁都照样转&#xff0c;就是少了…

华为p50预装鸿蒙系统,华为P50系列将至,内部测试预装鸿蒙系统,还有4款重磅新品将发布...

2021年的上半年旗舰手机发布时间相较往年提前很多&#xff0c;小米11甚至赶在2020年12月份就带着骁龙888处理器强势登场&#xff0c;随后包括iQOO7、vivo X60 Pro系列、realme GT、Redmi K40系列以及众多国产新旗舰机型相继登场&#xff0c;如今包括OPPO、一加科技等厂商也已经…

ASP.NET中的Menu控件的应用

1、首先建立一个Default.aspx的主页面&#xff0c;再建立一个站点地图&#xff1a;Web.sitemap 2、Default.aspx的主页面的设计 <% Page Language"C#" AutoEventWireup"true" CodeBehind"Default.aspx.cs" Inherits"Menu控件1.Default&q…

synchronized原理_synchronized 关键字底层原理

synchronized 关键字底层原理属于 JVM 层面。① synchronized 修饰同步语句块public class SynchronizedDemo {public void method() {synchronized (this) {System.out.println("synchronized 代码块");}} }通过 JDK 自带的 javap 命令查看 SynchronizedDemo 类的相…