代码之家  ›  专栏  ›  技术社区  ›  Dan J

是否有一个好的工具可以在运行时调试XAML的数据绑定行为/错误?

  •  29
  • Dan J  · 技术社区  · 15 年前

    例如,我最近不得不改变 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属性。在设计或运行时看到绑定到不同源和 RelativeSource 是的。

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

    4 回复  |  直到 11 年前
        1
  •  33
  •   Palec    8 年前

    你可以用 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
  •  4
  •   Wayne Werner    8 年前
        3
  •  3
  •   JaredPar    15 年前

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

        4
  •  0
  •   Geoff Hardy    12 年前

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

    当您在运行时命中断点时,可以使用“局部变量调试器”窗口检查它,并查看它绑定到了什么。

    推荐文章