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属性受到影响.在设计或运行时,看到绑定到不同源和RelativeSource
s 的含义是非常有帮助的.
是否存在任何此类工具/技术?
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)
归档时间: |
|
查看次数: |
11246 次 |
最近记录: |