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

Dan*_*n J 29 .net wpf xaml

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>
Run Code Online (Sandbox Code Playgroud)

进入:

<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>
Run Code Online (Sandbox Code Playgroud)

为了使DataGridRow属性受到影响.在设计或运行时,看到绑定到不同源和RelativeSources 的含义是非常有帮助的.

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

Ath*_*ari 33

您可以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>
Run Code Online (Sandbox Code Playgroud)

  • 这绝对有帮助 - 接受了!为了完整起见,因为在运行时检查可视化树是一个相关的问题,我还想向那些仍然不知道它的魅力的人指出[Snoop](http://www.blois.us/Snoop/). (5认同)