给依赖属性设置单向绑定时,直接给依赖属性赋值,导致单向绑定永久失效

问题描述

在下面这段代码中,我们给控件的某个属性设置了单向绑定,然后在代码的某处给这个属性显式地赋了值,结果会导致我们在这之前设置的绑定永久失效。

成都创新互联是一家专注于做网站、网站制作与策划设计,凌河网站建设哪家好?成都创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:凌河等地区。凌河做网站价格咨询:18980820575

//外部给Text属性设置绑定


//控件内部代码
private void ClearButton_Click(object sender, RoutedEventArgs e)
{
    base.Text = string.Empty;
}

解决方案1

最简单的解决方式是将绑定改为双向的,那么给任何一方显式地赋值都不会使绑定失效


解决方案2

如果不想更改绑定方式,那么可以在赋值前保存之前的绑定,在赋值后设置回去。这种方式验证过,也是可行的,不过感觉代码不太优雅,当出现这种情况时,或许可以思考从设计层面去规避掉。

private void ClearButton_Click(object sender, RoutedEventArgs e)
{
    var bindingExpression = this.GetBindingExpression(TextProperty);
    Binding binding = bindingExpression?.ParentBinding;
    base.Text = string.Empty;
    if (binding != null)
    {
        this.SetBinding(TextBox.TextProperty, binding);
    }
}

标题名称:给依赖属性设置单向绑定时,直接给依赖属性赋值,导致单向绑定永久失效
文章网址:http://bzwzjz.com/article/dsoiogd.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 成都品牌网站建设 手机网站制作 网站建设 响应式网站设计 定制级高端网站建设 成都网站建设 成都网站制作 专业网站设计 网站设计制作 成都网站设计公司 营销网站建设 外贸网站设计方案 网站设计 企业网站设计 阿坝网站设计 成都网站建设 成都网站制作 网站建设方案 成都商城网站建设 高端品牌网站建设 企业网站设计 成都定制网站建设