【问题标题】:Force binding to occur after apply ControlTemplate?应用 ControlTemplate 后强制绑定发生?
【发布时间】:2011-05-20 15:30:41
【问题描述】:

嘿,我正在构建一个 CustomControl,它具有一堆依赖属性和一些可视化部分,例如 Canvas、TextBox 等。 问题是,在为依赖属性分配值时,我需要对可视元素执行某些操作,即我需要将新依赖属性的值添加到 Canvas,但是当绑定启动并分配值时, ControlTemplate 尚未应用,因此它崩溃了。

有什么好的方法可以解决这个问题?

谢谢。

【问题讨论】:

    标签: .net wpf data-binding custom-controls controltemplate


    【解决方案1】:

    简单的解决方案是在依赖属性处理程序中进行空检查以防止崩溃,并覆盖您知道构建可视化树的相关方法(最有可能是 OnApplyTemplate)并在那里执行相同的操作来初始化您的视觉效果。

    【讨论】:

    • 呃,太简单了,我的问题是我仍然不确定 WPF 控件的生命周期如何。在依赖属性的 Changed 事件处理程序上启用断点,我可以看到它被设置了多次,一些空值,最后是我的绑定设置的值。我认为如果我在那里进行空检查,我会错过绑定值。无论如何,谢谢。
    • 嗯,组件生命周期不是精确的科学,有很多因素。比如你的控件嵌套有多深,它有什么样的父级(例如 ListBox 与简单的 Grid 相比有自己的生命等),你使用什么样的框架,你如何初始化你的 ViewModel 等等。跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2011-12-18
    • 2013-02-23
    相关资源
    最近更新 更多