【发布时间】:2011-06-09 09:09:21
【问题描述】:
除了使用 PresentationTraceSources.TraceLevel 之外,还有其他方法可以调试绑定吗?
我有一个相当复杂的问题,当元素名称绑定失败(未找到元素)时,它用于按钮上的 CommandParameter,该按钮是放置在 UserControl1 内的 UserControl2 上的子项。 PresentationTraceSources.TraceLevel=High 的输出是(PåstandsListe 是 UserControl2):
System.Windows.Data Warning: 52 : Created BindingExpression (hash=8957325) for Binding (hash=61342683)
System.Windows.Data Warning: 54 : Path: 'SelectedItem'
System.Windows.Data Warning: 56 : BindingExpression (hash=8957325): Default mode resolved to OneWay
System.Windows.Data Warning: 57 : BindingExpression (hash=8957325): Default update trigger resolved to PropertyChanged
System.Windows.Data Warning: 58 : BindingExpression (hash=8957325): Attach to System.Windows.Controls.Button.CommandParameter (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 61 : BindingExpression (hash=8957325): Resolve source deferred
'Domstolene.JFS.GUI.vshost.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_64\System.Transactions\2.0.0.0__b77a5c561934e089\System.Transactions.dll', Symbols loaded.
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Warning: 63 : BindingExpression (hash=8957325): Resolving source (last chance)
System.Windows.Data Warning: 66 : BindingExpression (hash=8957325): Found data context element: <null> (OK)
System.Windows.Data Warning: 70 : Lookup name PåstandsListe: queried Button (hash=426476)
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=PåstandsListe'. BindingExpression:Path=SelectedItem; DataItem=null; target element is 'Button' (Name=''); target property is 'CommandParameter' (type 'Object')
没有任何影响的更改:
- 绑定到的父元素 UserControl2 而不是 UserControl2。
非失败场景(这里 ElementName 绑定有效):
- UserControl2 未放置在 UserControl1 中。
- 按钮作为子项添加到 UserControl1 而不是 UserControl2。
此外,当我将 Snoop 附加到应用程序时,当我在 Snoop 中选择按钮时,ElementName 绑定开始工作(但在 VS 输出窗口中不显示任何信息)。 Snoop 是否会以某种方式刷新绑定?
更新
似乎问题只发生在按钮最初不可见时,例如放置在不可见的 Expander og TabItem 中。
【问题讨论】:
标签: wpf data-binding