Silverlight:Dependency Property(依赖属性)学习笔记
xaml部分:
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
>
<Border CornerRadius="5" BorderThickness="3" BorderBrush="#FFEF410D" Width="300" Height="40" Margin="5" >
<TextBlock x:Name="txt" Text="" VerticalAlignment="Center" HorizontalAlignment="Center"></TextBlock>
</Border>
</UserControl>
CS部分:(技巧:vs2008中,只要键入propdp,再连敲二次Tab键,vs就会自动添加一个依赖属性的代码模板)
using System.Windows.Controls;
namespace DPStudy
{
public partial class MyControl : UserControl
{
public static readonly DependencyProperty MessageProperty = DependencyProperty.Register("Message", typeof(string), typeof(MyControl), new PropertyMetadata("Message的默认值", new PropertyChangedCallback(OnMessagePropertyChanged)));
public string Message
{
get { return (string)GetValue(MessageProperty); }
set { SetValue(MessageProperty, value); }
}
/// <summary>
/// Message变化时的通知处理
/// </summary>
/// <param name="d"></param>
/// <param name="e"></param>
private static void OnMessagePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
MyControl ctl = d as MyControl;
ctl.txt.Text = d.GetValue(MyControl.MessageProperty).ToString();
}
public MyControl()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MyControl_Loaded);
}
void MyControl_Loaded(object sender, RoutedEventArgs e)
{
this.txt.Text = Message;//初始加载时,显示Message的初始值
}
}
}
这里我们定义了一个Message的string类型依赖属性,和普通属性的区别是:必须使用DependencyProperty.Register来注册该属性,而且“属性命名”要以Property为后缀;另外在读取时,必须调用SetValue/GetValue静态方法来读取其值,最后我们还可以添加一个"属性值变化时的"回调处理。
(2)将MyControl放到MainPage.xaml中小试牛刀
MainPage.Xaml内容如下:
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:l="clr-namespace:DPStudy"
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
<StackPanel x:Name="LayoutRoot">
<l:MyControl x:Name="myctl"></l:MyControl>
<Button Click="Button_Click" Content="改变Message属性值" Width="130" ></Button>
</StackPanel>
</UserControl>
MainPage.Xaml.cs内容如下:
using System.Windows.Controls;
namespace DPStudy
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
myctl.SetValue(MyControl.MessageProperty, "新值");
}
}
}
运行后,点击按钮将改变MyControl控件的Message属性值,同时MyControl中的文本控件的文字也将变成"新值"
转载请注明来自菩提树下的杨过
文中源文件代码:DPStudy.rar
转载于:https://www.cnblogs.com/yjmyzz/archive/2009/12/23/1630526.html
Silverlight:Dependency Property(依赖属性)学习笔记相关推荐
- 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)
数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...
- html5 scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记...
全文参考:https://github.com/iuap-design/blog/issues/38 .MDN clientHeight,只读 clientHeight可以用公式 CSS height ...
- html 滚动条 scrolltop scrollheight,JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记...
全文参考:https://github.com/iuap-design/blog/issues/38 .MDN clientHeight,只读 clientHeight可以用公式 CSS height ...
- Maven项目依赖管理 学习笔记
本学习笔记根据慕课视频[Maven项目依赖管理]摘录,主要学习maven的使用方式,从理念到实践.基础到应用,掌握基于maven管理java项目的方式. 目录 第一章 Maven概述 Maven简介 ...
- css flex属性学习笔记
参考文献 flex: 1 0calc((100% / min(var(--cx-active-view), var(--cx-max-views))) -var(--cx-split-gutter)) ...
- Angular 依赖注入学习笔记之工厂函数的用法
网址:https://angular.institute/di We can transfer any data through our apps, transform it and replace ...
- HTML5新增属性学习笔记
1.form属性 表单内的从属元素,可以写在表单外部.可以通过指定元素的form属性来声明元素所属表单.form的属性值为表单的id. 1 <form id="testForm&quo ...
- 常见的CSS字体样式属性/font-size/font-family/font-weight/font-style/font综合属性/@font-face属性/学习笔记
一.常见的CSS字体样式属性 1.font-size属性:用于设置字体字号 该属性的值有 相对长度单位:em(相对当前对象内文本字体尺寸)px(像素,最常用) 绝对长度单位:in(英寸)cm(厘米)m ...
- Vue中scoped属性学习笔记
#什么是scoped vue中在style标签中的一个属性,使用scoped属性可以使标签内的样式只作用于当前组件中的元素. #scoped的原理 在刚开始使用的时候,页面调试的html标签内和样式中 ...
最新文章
- Web 架构师的能力(转)
- 测试公众号修改名称_微信公众号开通个人认证,只需三步
- C语言 | 编译与预处理指令(宏定义完整讲解:#define)
- C#用IrisSkin4.dll 美化Winform窗体
- python怎么设置回文数_python如何写一个函数判断回文数?
- jquery选择器小知识点们
- Maven阿里云镜像配置
- .NET之我见系列 - 类型系统(上)
- C 中细节问题的试题
- Mybatis传递多个参数
- linux怎么卸载fishshell,为Bash/Zsh/Fish安装Starship Shell提示符的步骤
- 超越QQ Mail文件中转站---大文件上传设计思路和实践 原创 王泽宾
- 极化码 极化现象matlab仿真(信道容量,巴氏参数,高斯近似三种方法)
- python问题解决:TypeError: ufunc 'add' output (typecode 'O') could not be coerced to provided output para
- 黑苹果安装经验整理|再见丁小果
- android文件恢复功能,安卓手机误删文件恢复?快速恢复办法
- 谁是史上最强-用爬虫分析IMDB TOP250电影数据
- 天平游码读数例题_天平游码怎么读数?
- 哈密顿插值c语言,哈密顿系统有限元方法的长时间性质研讨——冯康猜想的证明.pdf...
- 此IP地址不允许调用接口,如有需要请登录微信支付商户平台更改配置
热门文章
- 安装 卸载 mysql linux,Linux 下MySQL 安装与卸载
- java两个栈怎么完成初始化_Spring bean初始化及销毁你必须要掌握的回调方法
- 如何创建linux 脚本,如何创建和执行shell脚本
- 目标检测(六)--SPPNet
- linux nvm node 权限不够_centos部署node+mongodb环境
- 高中电子技术——三极管的放大特性和开关特性
- 简述中断和 DMA 的区别。
- 《计算机网络》简要学习笔记:未完自用
- 计算机图形学用到哪些概率知识,图形学所需的数学知识
- 为什么java IO类不用基于继承的设计方案?