zoukankan      html  css  js  c++  java
  • [WPF源码分析]ContentControl依赖项属性的双向绑定,two-way binding view's DependencyProperty and ViewModel's variable

    问题:自定义控件的依赖项属性和VIewModel中的变量不能双向绑定

    解决思路:对比.net源码 PresentationFramework  /   System.Windows.Controls

    原因:定义依赖项属性时没有设置OnChanged方法

    解决方法:初始化时绑定Changed方法

    .net 源码如下:

    /// <summary>
            ///     The DependencyProperty for the Content property.
            ///     Flags:              None
            ///     Default Value:      null
            /// </summary>
            [CommonDependencyProperty]
            public static readonly DependencyProperty ContentProperty =
                    DependencyProperty.Register(
                            "Content",
                            typeof(object),
                            typeof(ContentControl),
                            new FrameworkPropertyMetadata(
                                    (object)null,
                                    new PropertyChangedCallback(OnContentChanged)));
     
            /// <summary>
            ///     Content is the data used to generate the child elements of this control.
            /// </summary>
            [Bindable(true), CustomCategory("Content")]
            public object Content
            {
                get { return GetValue(ContentProperty); }
                set { SetValue(ContentProperty, value); }
            }
     
            /// <summary>
            ///     Called when ContentProperty is invalidated on "d."
            /// </summary>
            private static void OnContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
            {
                // 根据需要实现自己的方法 
                ContentControl ctrl = (ContentControl) d;
                ctrl.SetValue(HasContentPropertyKey, (e.NewValue != null) ? BooleanBoxes.TrueBox : BooleanBoxes.FalseBox);
     
                ctrl.OnContentChanged(e.OldValue, e.NewValue);
            }
     
  • 相关阅读:
    python读取二进制文件写入到txt
    python格式化输出
    字符编码
    python--随时记录
    python-web服务器
    openssh移植
    select、poll、epoll
    (总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解
    heartbeat与keepalived的区别
    salt 常用命令整理
  • 原文地址:https://www.cnblogs.com/bincoding/p/8342791.html
Copyright © 2011-2022 走看看