【发布时间】:2017-01-23 08:26:57
【问题描述】:
我有一个按钮样式。根据按钮是否启用,我想更改背景。这是它的样子:
<Style x:Key="MyButtonStyle" TargetType="Button">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Button}, Path=IsEnabled, PresentationTraceSources.TraceLevel=High}" Value="False">
<Setter Property="Background" Value="Purple"/>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=Button}, Path=IsEnabled, PresentationTraceSources.TraceLevel=High}" Value="True">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
这只是一个基本示例。实际上我需要一个 MultiDataTrigger,但它甚至不能与常规 DataTrigger 一起使用。我看到的只是一个灰色按钮。
这是踪迹:
System.Windows.Data 警告:56:为绑定 (hash=6303779) 创建了 BindingExpression (hash=31767240)
System.Windows.Data 警告:58:路径:“IsEnabled”
System.Windows.Data 警告:60:BindingExpression (hash=31767240):默认模式解析为 OneWay
System.Windows.Data 警告:61:BindingExpression (hash=31767240):默认更新触发器解析为 PropertyChanged
System.Windows.Data 警告:62:BindingExpression (hash=31767240):附加到 System.Windows.Controls.Button.NoTarget (hash=24311680)
System.Windows.Data 警告:66:BindingExpression (hash=31767240):RelativeSource (FindAncestor) 需要树上下文
System.Windows.Data 警告:65:BindingExpression (hash=31767240):解决源延迟
System.Windows.Data 警告:67:BindingExpression (hash=31767240):正在解析源
System.Windows.Data 警告:70:BindingExpression (hash=31767240):找到数据上下文元素:(OK)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的网格 (hash=35377238)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的 ContentPresenter (hash=51189900)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的边框 (hash=48541090)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询 StartStopControl (hash=22721178)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的网格 (hash=32321338)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的 ContentPresenter (hash=31184590)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的边框 (hash=37117888)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的 MenuPanelControl (hash=873549)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的网格 (hash=29953511)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的 ContentPresenter (hash=42576376)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的 AdornerDecorator (hash=66649760)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的边框 (hash=23566381)
System.Windows.Data 警告:73:查找按钮类型的祖先:查询的 MainWindow (hash=38392424)
看起来好像遍历了整个可视化树,从放置Button的Grid开始。为什么不是从Button开始?
【问题讨论】:
-
如果我的回答对您有所帮助,如果您不介意,请将复选框标记为“回答”。
标签: c# wpf data-binding datatrigger