当 WPF检索自定义 DependencyProperty 的值时,如何创建触发断点?
I wrote this question poorly the first time 。不幸的是,理解why my breakpoint is not hit并没有解决我真正的问题。这是我应该问的问题。到处搜索我仍然不知道如何做到这一点。
如果 WPF 要绕过我的 getter 函数,还有其他方法吗?
我需要它来进行调试,以便在 WPF 检索此属性时检查调试器中控件的状态。
刷新一下,下面是我的自定义依赖属性
private static readonly DependencyPropertyKey ColorizerPropertyKey =
DependencyProperty.RegisterReadOnly(
nameof(Colorizer),
typeof(SurfaceSeries3DColorizer),
typeof(SurfaceDisplay),
new FrameworkPropertyMetadata());
private static readonly DependencyProperty ColorizerProperty =
ColorizerPropertyKey.DependencyProperty;
public SurfaceSeries3DColorizer Colorizer
{
get => (SurfaceSeries3DColorizer) GetValue(ColorizerProperty);
private set => SetValue(ColorizerPropertyKey, value);
}
...这是绑定(bind)到它的 XAML
<tk:SurfaceSeries3D ItemsSource="{Binding Points}"
XValueBinding="X"
YValueBinding="Y"
ZValueBinding="Z"
Colorizer="{Binding Colorizer}"
/>
最佳答案
有一种方法可以做到这一点,但您必须记住,您的调试对象(您调试的应用程序)和调试器本身将变得非常无响应。
因此,如果您尝试诊断一些令人讨厌且罕见的错误,这可能会有所帮助。否则,它毫无用处,因为你的应用程序几乎无法使用。
转到 Visual Studio 中的断点窗口,然后选择新建 --> 函数断点...。
输入:
System.Windows.DependencyObject.GetValue
启用条件复选框并输入您的条件:
dp == YourNamespace.YourClass.YourDependencyProperty
这里,dp
是 GetValue
方法的参数名称(不要更改),YourNamespace.YourClass.YourDependencyProperty
是您的依赖属性 public
字段(更改)。
现在,按 F5 即可享受。
在幕后,调试器将检查对 System.Windows.DependencyObject.GetValue
方法的每个调用,并且何时提供的参数将是您的属性,调试器将破坏您的应用程序。
请注意,WPF 非常频繁调用该方法 - 这就是您的应用和调试器将变得无响应的原因:每次调用都会检查一个条件,并且该条件需要在调试器和被调试者之间传输数据。
关于wpf - 如何在 WPF DependencyProperty 检索上放置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417683/