wpf - 如何在 WPF DependencyProperty 检索上放置断点?

标签 wpf dependency-properties

当 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

这里,dpGetValue 方法的参数名称(不要更改),YourNamespace.YourClass.YourDependencyProperty 是您的依赖属性 public 字段(更改)。

现在,按 F5 即可享受。

在幕后,调试器将检查对 System.Windows.DependencyObject.GetValue 方法的每个调用,并且何时提供的参数将是您的属性,调试器将破坏您的应用程序。

请注意,WPF 非常频繁调用该方法 - 这就是您的应用和调试器将变得无响应的原因:每次调用都会检查一个条件,并且该条件需要在调试器和被调试者之间传输数据。

关于wpf - 如何在 WPF DependencyProperty 检索上放置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57417683/

相关文章:

c# - 绑定(bind)到 UserControl DependencyProperty

c# - 绑定(bind) WPF DependencyProperty 的默认设置

c# - 集合类型附加属性

.net - WPF 控件的 Binding.Mode=Default 的默认值是什么?

WPF 数据网格 : How do I databind the properties of the SelectedItem to trigger INotifyPropertyChangedEvents?

WPF ListView非整体滚动

wpf - DataTemplate 内控件可见性的 DataTrigger 不起作用

c# - WPF 通知不适用于多个 View 模型

c# - 如何将属性绑定(bind)到另一个类的属性(没有 UI 控件)?

wpf - 在 UserControl 上绑定(bind)依赖属性的问题