gpt4 book ai didi

wpf - 防止 WPF 绑定(bind)异常 : Cannot find source for binding with reference 'RelativeSource FindAncestor.....' reduces performance

转载 作者:行者123 更新时间:2023-12-04 19:49:49 26 4
gpt4 key购买 nike

我写了样式:

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

仅当对包含此 ListBoxItemListBox 应用分组时才相关。但是,大多数时候它不在分组中,这会导致数十、数百和数千个绑定(bind)异常(取决于列表中有多少项)。绑定(bind)异常是性能问题的已知原因。当代码隐藏选择 ListBoxItem 并且 IsSelected 更改为 true 时,此绑定(bind)应扩展 Expander。如您所见,绑定(bind)是 Mode=OneWayToSource

有没有办法防止这些绑定(bind)异常?

最佳答案

It is relevant only when applying grouping for the ListBox that holds this ListBoxItem ...

然后仅在那时应用它,即当您确实分组时使用不同的样式或在触发器中设置 IsSelected 属性以确定您当前是否处于“分组”阶段。

如果您将 Setter 硬编码到默认的 Style 中,那么 XAML 处理器当然会始终尝试解析绑定(bind)。告诉它不要这样做的唯一方法是从 XAML 中删除绑定(bind)。

Is there a way to prevent these binding exceptions?

唯一的方法是删除失败的绑定(bind)。您可以在“工具”->“选项”->“WPF 跟踪设置”->“数据绑定(bind)”下关闭跟踪,但这不会阻止在 XAML 处理器尝试解析绑定(bind)时实际抛出异常。

关于wpf - 防止 WPF 绑定(bind)异常 : Cannot find source for binding with reference 'RelativeSource FindAncestor.....' reduces performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47789924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com