我写了Style
:
<Style x:Key="ProductItemContainerStyle"
TargetType="{x:Type ListBoxItem}"
BasedOn="{StaticResource ProductItemContainerBaseStyle}">
<Setter Property="IsSelected"
Value="{Binding Path=IsExpanded, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Expander}}, Mode=OneWayToSource}" />
</Style>
仅在为保留此ListBox
的{{1}}应用分组时才有意义。但是,大多数情况下它不在分组中,这导致数十,数百和数千个绑定异常(取决于列表中有多少项)。绑定异常是性能问题的已知原因。当后面的代码选择ListBoxItem
并且Expander
更改为true时,此绑定应扩展ListBoxItem
。如您所见,绑定为IsSelected
。
有没有办法防止这些绑定异常?
答案 0 :(得分:2)
仅在为
ListBox
ListBoxItem
IsSelected
申请分组时才有意义。
然后才应用它,即在您确实分组时使用不同的样式,或者在触发器中设置Setter
属性,以确定您当前是否处于“分组”阶段。
如果您将Style
硬编码为默认log4j.properties
,那么XAML处理器当然会尝试解析绑定。告诉它不要的唯一方法是从XAML中删除绑定。
有没有办法防止这些绑定异常?
执行此操作的唯一方法是删除失败的绑定。您可以在工具 - &gt;选项 - &gt; WPF跟踪设置 - &gt;数据绑定下关闭跟踪,但这不会阻止在XAML处理器尝试解析绑定时实际抛出的操作。