《深入浅出WPF》学习笔记之二

视频地址: XAML中为对象属性赋值的语法

  1. xmal文件使用声明性语言,“<window />”表示声明一个窗体对象。
  2. 对象存储数据的方式:1、字段;2、属性。通常以属性的方式获取数据。
  3. 为对象属性赋值的三种方式:

    1、使用Attribute=Value赋值

    <Button Width="100" Height="30"/>

若属性不是字符串格式,应该怎么办呢?这个时候需要将value转换为属性类型,并赋值给对象。

1、在.cs文件中,我们新建一个Animal类

namespace HelloWPF
{
    public  class Animal
    {
        public string name { get; set; }
        public Animal animal { get; set; }
    }
}

2、在.xaml的命名空间中引用Animal所在的命名空间:

<Window x:Class="HelloWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:HelloWPF"
        Title="MainWindow" Height="350" Width="525">
</Window>

3、将Animal对象作为资源声明,并为对象属性赋值

1、在xaml文件中对对象的string类型属性赋值,并在.cs文件中获取值:

<Window.Resources>
     <local:Animal x:Key="animal" name="Hello Ketty"></local:Animal>
</Window.Resources>

<Window.Resources>:以字典的形式维护一系列资源。

Animal cat = this.FindResource("animal") as Animal;
MessageBox.Show(cat.name);

2、在xaml文件中对对象的Animal类型属性赋值,并在.cs文件中获取值:

    <Window.Resources>
        <local:Animal x:Key="animal" Name="Hello Ketty" animal="Doggy"></local:Animal>
    </Window.Resources>
    public  class Animal
    {
        public string Name { get; set; }
        public Animal animal { get; set; }
    }

    public class NameToAnimalTypeConverter : TypeConverter
    {
        public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
        {
            string name = value.ToString();
            Animal animal = new Animal();
            animal.Name = name;
            return animal;
        }
    }

.cs文件中获取xaml 文件中的Animal对象的animal属性

            Animal cat = this.FindResource("animal") as Animal;
            if (cat != null)
                MessageBox.Show(cat.animal.Name);
时间: 2024-10-13 23:22:56

《深入浅出WPF》学习笔记之二的相关文章

WPF学习笔记(二)----Events, Commands

1.配置事件和事件处理(Configuring Events and Event Handling) 事件在WPF编程是明显不同于那些在传统的Windows窗体的编程.WPF使用路由事件,可以存在多个控制和多个处理程序.路由事件允许您添加多个层次的复杂性和复杂的用户界面,响应用户输入.学习路由事件,包括如何处理一个路由事件,定义和注册一个新的路由事件,处理应用程序生命周期事件,并使用EventManager类. 1.1 下面使用一个实例说明如何定义.注册.封装路由事件 public abstra

《深入浅出WPF》笔记——绘画与动画

<深入浅出WPF>笔记——绘画与动画 本篇将记录一下如何在WPF中绘画和设计动画,这方面一直都不是VS的强项,然而它有一套利器Blend:这方面也不是我的优势,幸好我有博客园,能记录一下学习的过程.在本记录中,为了更好的理解绘画与动画,多数的例子还是在VS里面敲出来的.好了,不废话了,现在开始. 一.WPF绘画 1.1基本图形 在WPF中可以绘制矢量图,不会随窗口或图型的放大或缩小出现锯齿或变形,除此之外,XAML绘制出来的图有个好处就是便于修改,当图不符合要求的时间,通常改某些属性就可以完成

VSTO学习笔记(二)Excel对象模型

原文:VSTO学习笔记(二)Excel对象模型 上一次主要学习了VSTO的发展历史及其历代版本的新特性,概述了VSTO对开发人员的帮助和效率提升.从这次开始,将从VSTO 4.0开始,逐一探讨VSTO开发中方方面面,本人接触VSTO时间不长,也是一次尝试.鉴于Excel在整个Office家族中的重要地位,故先从Excel开始介绍,后续内容会陆续介绍Word.PowerPoint.Outlook.InfoPath等.由于VSTO 4.0建立在Office 2010基础之上,先介绍一下Office

Unix文件系统学习笔记之二: 文件描述符、inode和打开文件表

Unix文件系统学习笔记之二: 文件描述符.inode和打开文件表 系统盘上数据的布局 文件系统无非是关于数据在磁盘上的组织以及存储空间管理的,为此,首先需要知道磁盘上数据的总体布局方式.以Unix为例,最重要的一张表如下: Unix 进程管理中和用户文件.io 最相关的数据结构:usr 数据结构 The procstructure does not record information related to file access.  However the userstructure con

C++primer学习笔记(二)——Chapter 4

4.1  Fundamentals 1.Basic Concepts (1)操作符分为一元,二元或者三元操作符: (2)复杂的表达式中含有很多操作符时: 规则一:分为不同的级别,级别高的先运行: 规则二:相同级别的操作符有执行顺序的确定: (3)操作符可以改变操作数的类型 一般将级别低的转化成级别高的 (4)重载运算符 相同的运算符在对不同类型的对象进行操作的时候,会有不同的功能: (5)Lvalue和Rvalue 显而易见:Lvalue指的是Left value,Rvalue指的是Right

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/

《语义网基础教程》学习笔记(二)

二.RDF概述(参考http://zh.transwiki.org/cn/rdfprimer.htm) 1.本体: 一个本体是一个概念体系(conceptualization)的显式的形式化规范. 一般来说,一个本体形式地刻画一个论域.一个典型的本体由有限个术语及它们之间的关系组成. ★在万维网这个环境中,本体提供了对给定领域的一种共识.这种共识对于消除术语差别是必要的. 通过把各自的术语差异映射到一个公共的本体之间的直接映射,可以消除这些术语差异. 不管采用哪种方案,本体都支持语义可共用性(s

《iOS应用逆向工程》学习笔记(二)iOS系统目录结构(部分)

首先下载个iFile,可以用来直观地查看iOS系统的目录结构. 下面记录一些关键的iOS目录结构: /var:"variable"的简写,存放一些经常更改的文件,例如日志.用户数据.临时文件等.其中/var/mobile/Applications下存放了所有App Store App. /Applications:存放所有的系统App和来自Cydia的App,不包括App Store App.越狱的过程把/Applications变成了一个符号链接,实际指向/var/stash/App

现代C++学习笔记之二入门篇2,数据转换

static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的. dynamic_cast: dynamic_cast在运行时检查基类指针和派生类指针之间的强制转换. dynamic_cast 是比 static_cast 更安全的强制类型转换,但运行时检查会带来一些开销. const_cast:    con

HTML5学习笔记(二)——表单1

表单一直是网页必不可少的一部分,一直以来,表单的作用被无限扩展,发展出了诸多新奇的用法,老版的HTML只支持很少的一部分常用表单,许多的新表单都需要借助CSS与JavaScript语言来进行构建,现在HTML5来了,她带来了新的表单,这些强大的表单项,可以省去一大块复杂的JavaScript代码,很值得去学习. 而且在新的表单里面,不再像以前每个表单都必须位于<form></form>之内,只要在<form></form>内定义一个id,然后在网页任何位置都