【问题标题】:Is there a good tool for debugging XAML's databinding behavior / errors at runtime?是否有在运行时调试 XAML 数据绑定行为/错误的好工具?
【发布时间】:2010-10-26 18:03:44
【问题描述】:

WPF 是一个很棒的工具集,XAML 数据绑定非常强大,但由于它的透明性,我经常遇到困难:在没有抛出错误的情况下,很难调试数据绑定失败。

例如,我最近不得不像这样更改Style 声明:

<DataGrid.RowStyle>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding TestProperty}" Value="False">
                <Setter Property="DataGridRow.Background" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

进入这个:

<DataGrid.RowStyle>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.TestProperty}" Value="False">
                <Setter Property="DataGridRow.Background" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

为了影响 DataGridRow 属性。在设计或运行时查看绑定到不同源和RelativeSources 的含义将非常有帮助。

是否存在任何此类工具/技术?

【问题讨论】:

    标签: .net wpf xaml


    【解决方案1】:

    您可以在绑定上使用PresentationTraceSources.TraceLevel 附加属性,以便在运行时在输出中获取详细的日志记录。

    在你的情况下,它看起来像这样:

    <DataGrid.RowStyle>
        <Style>
            <Style.Triggers>
                <DataTrigger Value="False" Binding="{Binding DataContext.TestProperty,
                        RelativeSource={RelativeSource AncestorType=UserControl},
                        PresentationTraceSources.TraceLevel=High}">
                    <Setter Property="DataGridRow.Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </DataGrid.RowStyle>
    

    【讨论】:

    【解决方案2】:

    Bea Stollnitz 有一篇关于debugging WPF bindings 的博文内容丰富。

    如果您使用的是 Visual Studio 2010,则需要update the default WPF trace setting

    【讨论】:

    • +1 非常感谢您指出需要更新 VS2010 设置;我会在那个上面浪费很多时间。
    【解决方案3】:

    如果您在 Visual Studio 调试器下运行您的应用程序,绑定错误将报告到输出窗口。这些信息非常丰富,应该可以帮助您追踪任何错误。

    【讨论】:

      【解决方案4】:

      Visual Studio 2010 中的另一个选项是在绑定上放置一个断点。这可以通过单击 Binding 关键字并按 F9 设置断点来轻松完成。 Binding 关键字将以红色突出显示。如果突出显示较大的文本块,则可能是断点在您使用的编辑器中不起作用。如果发生这种情况,请尝试在解决方案资源管理器中右键单击该文件,选择“打开方式”并选择“源代码(文本)编辑器”。

      当您在运行时遇到断点时,您可以使用 Locals 调试器窗口检查它并查看它绑定到什么。

      【讨论】:

      • 这在 Visual Studio 2010 中对我不起作用:查看 XAML 文件时,“调试”菜单中没有出现断点选项,并且将光标放在 {Binding ... 上按 F9 无效。你能澄清一下你正在做什么(也许用截图)来实现这个目标吗?
      猜你喜欢
      • 1970-01-01
      • 2012-01-28
      • 2021-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      相关资源
      最近更新 更多