编程知识 购物 网址 新闻 笑话 | 软件 日历 阅读 图书馆 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
   -> Windows Phone -> WP记录DependencyProperty学习(1) -> 正文阅读

[Windows Phone]WP记录DependencyProperty学习(1)

很早之前就看到DependencyProperty,但是每次看到都不想去深入,一眼看过去好难的样子,今天静下来学习一下,怕自己过几天又忘了,来记录一下自己学习的东西。
首先我们来看看这个东西,

public static readonly DependencyProperty ItemContainerStyleProperty =
            DependencyProperty.Register("ItemContainerStyle", typeof(string), typeof(MyControl), new PropertyMetadata(null, OnItemContainerStylePropertyChanged));

第一眼被吓懵了,都干嘛的,好厉害的样子,下面慢慢来说:上面就是定义了一个依赖属性,干嘛用的,看名字就是用来设置属性的,来看看参数ItemContainerStyle这个相当于标示符,在你写xaml设置的时候,系统会去找到你设置的这个名字进行操作,typeof(string)设置类型,typeof(MyControl)这个告诉系统你这个注册的属性是属于哪个类的,new PropertyMetadata(null, OnItemContainerStylePropertyChanged)属性值改变时触发的事件和属性的初始值

public string ContentInfo
        {
            get { return (string)GetValue(ItemContainerStyleProperty); }
            set { SetValue(ItemContainerStyleProperty, value); }
        }

上面这个应该没问题了,就是设置或者获取属性了,ContentInfo就是你调用自己写的控件时可以看到的属性了

[TemplatePart(Name = InnerSelectorName, Type = typeof(LongListSelector))]
[StyleTypedProperty(Property = "MyWidth", StyleTargetType = typeof(MyControl))]
[TemplateVisualState(Name =”Selected“, GroupName = "SelectionStates")]

刚看到上面这几个大括号我又懵了,慢慢来吧:
TemplatePart的作用是*.cs中对于*.xaml中定义的控件进行获取,并进行操作,不好理解,其实就是在资源字典ResourceDictionary中(也就是一个.xaml)定义中可以使用.cs的属性一些东西,.cs可以使用到.xaml里面的动画一些东西
StyleTypedProperty: FontSize="{TemplateBinding FontSize}“这个大家应该在自定义控件时在.xmal经常看到吧,改一下FontSize="{TemplateBinding MyWidth}“,没错StyleTypedProperty就是关联cs里面的MyWidth属性
TemplateVisualState:这个就是我们经常看到的过度状态了,看看这个代码,是不是明白了

 <VisualStateGroup x:Name="SelectionStates">
            <VisualState x:Name="Selected"/>
        </VisualStateGroup>

说到底上面的这几个都是*.cs中对于*.xaml中定义的控件进行获取,并进行操作,xaml里面可以用cs里面设置的属性,cs里面可以调用.xmal里面写的个种动画效果
然后来说说EventHandler事件,来代码

public event EventHandler ManipulationStateChanged;
public event PropertyChangedEventHandler PropertyChanged;

public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            _myControl.Clear();
            if (_myControl!= null)
            {
                _myControl.ManipulationStateChanged -= OnInnerSelectorManipulationStateChanged;
                _innerSelector.PropertyChanged -= OnInnerSelectorPropertyChanged;
            }
            _myControl= this.GetTemplateChild(InnerSelectorName) as LongListSelector;
            if (_myControl!= null)
            {
                _myControl.ManipulationStateChanged += OnInnerSelectorManipulationStateChanged;
                _myControl.PropertyChanged += OnInnerSelectorPropertyChanged;
            }
        }

这个比较简单了,就是事件的订阅和取消了
上面这些都是继承Control写的,如果要实现listbox这种需要item这种单项内容的,还要加入继承ContentControl的item相应的属性的方法,要是觉的直接继承Control很多属性和事件都被加进来太多的话还可以自己写个DependencyProperty 和DependencyObject,详细可以参考一下这篇DependencyObject,更深入的以后学习了在发

 

  Windows Phone 最新文章
[UWP] 自定义一个ItemsPanel
WP8.1程序开发中,如何加载本地文件资源或安
UWP 律师信息 MVVM 2.0版本
Win10 FaceAPI小demo开发问题汇总
【转】UWP 捕获全局异常
x:bind不支持样式文件 或 此Xaml文件必须又
WP模拟器修改语言为中文方法
wp仿系统截图
Windows Phone 8 锁屏背景与通知
博客园新闻WP8.1客户端
上一篇文章      下一篇文章      查看所有文章
加:2015-03-30 14:46:38  更:2017-05-17 02:41:48 
 
360图书馆 软件开发资料 购物精选 新闻资讯 Chinese Culture 三丰软件 开发 中国文化 阅读网 日历 万年历 2019年12日历
2019-12-8 7:52:56
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程知识