如何仅动态展开单击的展开器?

How do I dynamically expand only the clicked expander?

我的扩展器有问题。 (再次...)

我有一个包含未知条目数的 DataGrid。每个条目都是不同的并手动添加。他们每个人都有自己所属的特定 "Area"。条目通过 "Area" 分组。分组是通过 GroupItem 进行的。在此 GroupItem 中,有一个带有 IsExpanded 绑定的扩展器。我还有一个过滤器文本框,其中的条目被过滤,只有正确的条目才会显示在组中。如果过滤器找到一个条目,那么所有 Expanders 的 isExpanded 属性 应该为真。如果过滤器未找到条目,则 isexpanded 为假。 此解决方案中的问题是:如果我单击一个 Expander,则所有 Expanders isExpanded 属性 都设置为 true,但它应该只是我单击的那个。

我知道这种行为是因为我只有 1 个多次创建的 Expander。

现在回答问题: 有没有可能只有我点击的expander打开,如果Filter找到值,所有的expander都打开?

这是属性:

public bool? FilterExpander
        {
            get
            {
                return _FilterExpander;
            }
            set
            {
                _FilterExpander = value;
                RaisePropertyChanged(() => FilterExpander);
            }
        }

这是扩展器所在的标题样式:

<Style x:Key="GroupHeaderSettingsStyle" TargetType="{x:Type GroupItem}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type GroupItem}">
                        <Expander x:Name="Exp" IsExpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander}" >
                            <Expander.Header>
                                <TextBlock Text="{Binding Name}" Foreground="White"/>
                            </Expander.Header>
                            <ItemsPresenter/>
                        </Expander>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

我希望这是可能的,并且有人可以帮助我。

提前致谢

我找到了解决办法。 我只需要将 Expander 模式设置为 "OneWay"。 这样它就可以正常工作。 这个

<expander x:name="Exp" isexpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander}"</expander>

应该是

<expander x:name="Exp" isexpanded="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl},Mode=FindAncestor},Path=DataContext.FilterExpander, Mode=OneWay}"</expander>