【发布时间】:2022-02-11 06:58:09
【问题描述】:
我遇到了一个数据绑定问题(一个单独的问题),通常在我编写代码时,我可以使用调试器单步执行并点击断点。可能是一个简单的问题花了我一整天,没有解决(现在变得非常沮丧),因为我不知道如何在我的 XAML 数据绑定上“运行调试器”。
如果有人能解释如何做到这一点,将不胜感激。
【问题讨论】:
-
感谢所有出色的答案。每个人都 +1。
标签: wpf
我遇到了一个数据绑定问题(一个单独的问题),通常在我编写代码时,我可以使用调试器单步执行并点击断点。可能是一个简单的问题花了我一整天,没有解决(现在变得非常沮丧),因为我不知道如何在我的 XAML 数据绑定上“运行调试器”。
如果有人能解释如何做到这一点,将不胜感激。
【问题讨论】:
标签: wpf
我不知道 VS 是否提供了一种简单的方法来调试绑定,但我通常使用Snoop 来调试绑定
这是一个工具,它将通过 WPF 应用程序并为您提供应用程序的可视树的 TreeView。您可以选择一个元素来查看其 DataContext 和其他属性。如果有任何绑定错误,该属性通常会突出显示,它会说明错误是什么。如果由于属性不存在而导致绑定失败,我通常可以跟踪 DataContext 并找出我的绑定出错的地方。
【讨论】:
添加一个虚拟转换器
<local:DebuggerConverter x:Key="DebuggerConverter" />
<TextBlock Text={Binding ToSomething, Converter={StaticResource DebuggerConverter}} />
转换器
public class DebuggerConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Set breakpoint here
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// Set breakpoint here
return value;
}
#endregion
}
或使用它并查看您的输出窗口
<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase">
<TextBlock Text="{Binding ToSomething, diagnostics:PresentationTraceSources.TraceLevel=High}" />
</Window>
希望对你有帮助
【讨论】:
当我开始使用 WPF 时,这是我在调试绑定时面临的主要问题。每次查看输出窗口并搜索您的绑定对于非常大的应用程序来说似乎很麻烦。然后我看到了这篇对 Bindings 有详细了解的优秀文章:
(原始,死链接)http://bea.stollnitz.com/blog/index.php?s=presentationtrace
存档:https://github.com/bstollnitz/old-wpf-blog/tree/master/45-DebuggingDataBinding
希望这对您也有帮助... :)
【讨论】:
您可以在 Visual Studio 的输出窗口中获得有关绑定错误的一些基本信息。它将显示绑定表达式路径错误以及发生错误的行。
【讨论】:
在绑定中添加一个虚拟值转换器。在值转换器内放置一个断点。还要检查 Visual Studio 中的调试输出窗口是否存在任何绑定错误。
【讨论】: