- 我是
WPF
的初学者。在调试使用MVVM
模式构建的大型项目时,如何找到为当前绑定元素提供数据的source? - 比如说
<DataTemplate x:Key="TMPL_NameColumnB">
<ComboBox VerticalAlignment="Center"
Validation.ErrorTemplate="{x:Null}"
Panel.ZIndex="1"
DisplayMemberPath="Title"
ItemsSource="{Binding TypeChoices}"
SelectedItem="{Binding TypeChoice}"
Visibility="{Binding DataContext.CanChangeType,
Converter={StaticResource {x:Type BooleanToVisibilityConverter}},
RelativeSource={RelativeSource AncestorType=ListView}}" />
- 对于上面的数据模板,我如何才能找到,哪个对象
TypeChoices
,属性用于绑定。 - 这个问题是为了了解如何在调试时找到数据绑定的源。
2条答案
按热度按时间5lhxktic1#
Enable in-app toolbar
选项Go to Live Visual Tree
按钮Select Element
按钮选择要应用模板的元素Show Properties
Live Property Explorer
中DataContext
属性的值。它显示元素的当前DataContext
。此类型应该有一个名为TypeChoices
的公共属性,以便绑定工作。有关如何在调试时检查XAML属性的详细信息,请参阅docs。
neskvpey2#
1.您必须检查感兴趣的元素的
DataContext
。例如,如果要检查
ComboBox.ItemsSource
数据绑定的源:**a)**首先检查绑定表达式。在这种情况下,它将使用隐式的源符号
{Binding PropertyPath}
,该符号始终指向本地/继承的DataContext
作为源(但它也可以显式地设置属性RelativeSource
或ElementName
或Source
,这将沿着可视化树更改源)。本地DataContext
是定义绑定的元素的DataContext
:ComboBox.DataContext
。**B)**使用可视化树检查器查找
ComboBox
并检查DataContext
属性。如果绑定已经定义了
RelativeSource
或ElementName
属性,那么您将查找相应的元素并检查其DataContext
。Inspect XAML properties while debugging
How to: Use the WPF Tree Visualizer
Introducing the UI debugging tools for XAML
1.或者,使调试器跟踪程序能够输出绑定信息。如果数据绑定的跟踪级别设置为例如
Information
或Verbose
,您应该通过检查“输出”窗口中的跟踪输出来找到特定绑定的数据源。How to: Display WPF Trace Information
要更改特定绑定的跟踪级别,可以设置
PresentationTraceSources.TraceLevel
attached属性。只需将其附加到
Binding
对象:1.如果感兴趣的绑定产生错误,您始终可以打开Visual Studio“XAML Binding Failures”工具窗口并从那里检查绑定。
参见XAML data binding diagnostics