栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

依赖项属性收到XAML更改时的回调

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

依赖项属性收到XAML更改时的回调

您将必须使用属性元数据注册PropertyChangedCallback。

原因是在XAML中,通过绑定或其他来源设置的依赖项属性不会调用CLR包装器(setter方法)。MSDN上的XAML加载和依赖项属性文章中对此原因进行了说明:

出于实现的原因,将属性标识为依赖项属性并访问属性系统的SetValue方法以对其进行设置比使用属性包装器及其设置器要便宜得多。

因为针对属性设置的XAML处理器行为的当前WPF实现完全绕过了包装,所以您不应为自定义依赖项属性在包装的集合定义中添加任何其他逻辑。如果将这样的逻辑放在集合定义中,则当在XAML中而不是在代码中设置属性时,将不会执行该逻辑。

您的代码应如下所示:

public static readonly DependencyProperty IsClosedProperty =    DependencyProperty.Register(        "IsClosed", typeof(bool), typeof(GroupBox),        new frameworkPropertymetadata(false, frameworkPropertymetadataOptions.AffectsRender, (o, e) => ((GroupBox)o).onIsClosedChanged()));public bool IsClosed{    get { return (bool)GetValue(IsClosedProperty); }    set { SetValue(IsClosedProperty, value); }}private void onIsClosedChanged(){    _rowDefContent.Height = new GridLength((IsClosed ? 0 : 1), GridUnitType.Star);}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/372844.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号