在控件加载之前我的数据绑定没有被评估,我在控件加载后得到属性改变的事件为什么?

时间:2010-10-23 02:30:06

标签: wpf

我有一个非常有趣的问题,很长一段时间以来我一直在打破它。

我是WPF以及MVVM和所有相关内容的新手。

我有一个窗口,我在其中放置一个用户控件,其中包含一个TabControl。

此选项卡控件具有自定义单选按钮和组合框,它们显示很少的依赖项属性,现在加载这些自定义控件时,作者会检查值并执行“特定的”行为。但是在我的情况下,在加载控件时,DP具有空值。我看到DP属性更改事件只在我的情况下在该控件的加载后被触发。它在其他窗口上运行正常。

这对我来说有点奇怪,因为我预计在控件加载之前DP会被绑定到相关的值,但我在这里看不到这种行为。

我已经在MSDN上读过在加载事件之前应该正确设置DP,并且在示例应用程序中,我看到它的行为符合MSDN。

绑定发生正常,因为输出窗口没有错误+我也得到了DP - 属性更改事件,但这只发生在加载后(我不知道为什么?)

任何帮助都会被证实。

编辑:

在我检查输出轨迹后,第一次打开对话框

,我得到了所有绑定的跟随

无法使用绑定检索值,并且不存在有效的回退值;使用默认值

我不确定为什么所有这些都无法找到??? 这是一个时间问题,我在每个地方使用DATA上下文属性值继承.....

1 个答案:

答案 0 :(得分:0)

您的DP值在加载前已设置,但它们被设置为Bindings,在UI加载之前不会评估(因此不向DP提供值) 。直接设置的值(通常在XAML中)会在加载期间立即应用于DP,因为该值保证可用。绑定通常取决于DataContext或其他可视树元素(ElementName或RelativeSource)之类的东西,这些元素可能在加载完成后才可用,因此Binding评估过程会在稍后发生。