`
jiasongmao
  • 浏览: 648075 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

WPF中的依赖属性

    博客分类:
  • WPF
阅读更多

依赖属性 (Dependency Property)

.NET Framework 3.0 引入了一个新的属性类型叫依赖属性 , WPF,WF 都在使用依赖属性用来实现样式化 , 数据绑定等 . 我们更多的使用依赖属性是为了让父元素的属性值在逻辑树上慢慢的传递到其子元素中 , 从而可以在整个可是父元素的逻辑子元素中共享属性值 .WF 就是依靠依赖属性来在工作流中的各 Activity 间传递属性值的 . 所以 , 依赖属性内建的传递变更通知的能力是其最大特征 .

什么时候需要定义依赖属性
1〉  如果希望属性可以在Style中设定
2〉  如果希望属性可以数据绑定
3〉  如果希望属性可以由动态资源(DynamicResource)设定
4〉  如果希望从父元素那里获得值
5〉  如果希望属性可以设置动画
6〉  如果希望属性在被修改时能够检测值得有效性,修改后回调
7〉  如果希望使用已有的依赖属性(Metadata override)

示例:
public partial class UserControl1 : UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }


        public static readonly DependencyProperty StudentProperty = DependencyProperty.Register("Student", typeof(String), typeof(UserControl1), new FrameworkPropertyMetadata("jiasongmao", new PropertyChangedCallback(OnStudentChanged)),new ValidateValueCallback(StudentValidation));


        private static void OnStudentChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
        {
            MessageBox.Show("OnStudentChanged");
        }

        private static bool StudentValidation(object value)
        {
            if(value.ToString().Contains("jiasongmao"))
                return true;
            return false;
        }

        public String Student
        {
            get { return GetValue(UserControl1.StudentProperty).ToString(); }

            set { SetValue(UserControl1.StudentProperty, value); }
        }
    }
 
使用:
<local:UserControl1 x:Name="user1" Student="jiasongmaolsakjdflaksd"/>

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics