WPF-绑定对象是按需创建的(在触发器条件下)还是在元素加载时创建的?

WPF-绑定对象是按需创建的(在触发器条件下)还是在元素加载时创建的?,wpf,data-binding,Wpf,Data Binding,我得到了下面的代码,我想知道触发器的第二个条件的第二个绑定是否在加载TreeViewItem时创建了它的绑定对象?或者只有当第一个条件为真时 <Style TargetType="TreeViewItem"> <Style.Triggers> <MultiDataTrigger> <MultiDataTrigger.Conditions>

我得到了下面的代码,我想知道触发器的第二个条件的第二个绑定是否在加载TreeViewItem时创建了它的绑定对象?或者只有当第一个条件为真时

<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>
让我们假设我们有一个数据网格,每个单元格有5个MultiDataTriggers,每个单元格中有4个条件。大多数多数据触发器将在第一个条件下失败,该条件限定为Mode=OneTime的某个系统属性。在这种情况下,我认为每个单元格都会徒劳地创建这么多绑定对象,这有点沉重。或者,因为我们有虚拟化和分页功能,所以它并没有那么重要

我得到了下面的代码,我想知道触发器的第二个条件的第二个绑定是否在加载TreeViewItem时创建了它的绑定对象

对。将样式应用于TreeViewItem后,将立即创建绑定

或者只有当第一个条件为真时

<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>
没有

在这种情况下,我认为每个单元格都会徒劳地创建这么多绑定对象,这有点沉重


不管重不重,这就是它的作用。但一般来说,这不应该是一个问题。绑定对象非常小,垃圾收集器最终将收集应用程序不再使用的任何对象。

这应该回答您的问题:不。我问过WPF是否正在创建第二个和第三个条件的bindings对象,即使第一个条件失败了,它们也没有被触发。换句话说,条件的所有绑定对象是在窗口加载时创建的,还是仅在满足之前的条件时创建的。记忆的一面让我对这里感兴趣。