【发布时间】:2018-07-18 03:59:40
【问题描述】:
我得到了下面的代码,我想知道第二个绑定(trigger 的第二个条件)是否在加载TreeViewItem 时创建了它的绑定对象?还是仅当第一个 condition 为 True 时?
<Style TargetType="TreeViewItem">
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding RelativeSource={RelativeSource Self}, Path=IsMouseOver}"
Value="True"/>
<Condition Binding="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType=TreeView}, Path=DataContext.IsConfigurationAttributeEnabled}"
Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="Foreground"
Value="Aqua"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
假设我们有一个DataGrid,每个单元格有5 个MultiDataTriggers,每个单元格有4 个条件。大多数多数据触发器将在第一个条件下失败(绑定到 Mode=OneTime 的某些系统属性)。在这种情况下,我认为每个单元格徒劳地创建这么多绑定对象有点沉重。或者也许它不是那么重要,因为我们有虚拟化和分页?
【问题讨论】:
-
这应该回答你的问题:stackoverflow.com/a/19889144/109702
-
不。我已经询问 WPF 是否正在创建第二个和第三个条件(不是触发器)的绑定对象,即使第一个条件失败并且它们从未达到。换句话说,条件的所有绑定对象是在窗口加载时创建的,还是仅在满足先前条件的情况下创建。记忆方面让我感兴趣。
标签: wpf data-binding