C# 如果手动更换不再工作,膨胀机将从DynamicSource中展开

C# 如果手动更换不再工作,膨胀机将从DynamicSource中展开,c#,wpf,xaml,expander,dynamicresource,C#,Wpf,Xaml,Expander,Dynamicresource,经过大量的搜索,我想出了以下代码来扩展我的扩展器: 我是XAML/WPF新手,所以我很有可能用更好的方法来实现这一点,但是经过大量的搜索,我很高兴我的XAML/WPF能够正常工作(但还没有完全完成) XAML: 将此添加到“标题” 然后将此添加到窗口。资源 <System:Boolean x:Key="booexapnders">False </System:Boolean> 例如,现在的问题是。我在listview中得到了5个项目

经过大量的搜索,我想出了以下代码来扩展我的扩展器: 我是XAML/WPF新手,所以我很有可能用更好的方法来实现这一点,但是经过大量的搜索,我很高兴我的XAML/WPF能够正常工作(但还没有完全完成)

XAML: 将此添加到“标题”

然后将此添加到窗口。资源

 <System:Boolean x:Key="booexapnders">False          
        </System:Boolean>
例如,现在的问题是。我在listview中得到了5个项目,我想看到1的扩展版本,我用一个按钮将它们全部对齐(这可以工作),然后在listview中手动展开我想要的项目(展开以查看更多信息),但是在我这样做之后,我刚才手动展开的项目将不再对“全部展开”或“全部折叠”按钮做出反应


提前谢谢。

您应该将
IsExpanded
绑定到项目上的属性,然后展开或折叠您在集合上迭代的所有内容,并更改所有项目的值,要更改一个,您只需对单个项目执行此操作,就可以更好地控制。

您的“项目”是什么意思?在我的类上?@Maximc:在集合中的项目类型上,该集合是您的
列表视图的源。(目前,看起来您可能正在使用一个简单的字符串集合,您需要将其更改为一个适当的类,该类具有标题和expaded状态中显示内容的属性)我使用一个类进行绑定。但是粘贴我所有的代码太复杂了,我有多个ListView,有些没有expander,我有多个ObservableCollections^^(我创建的类)。这些项是从SQLite数据库加载的,我认为在类中添加一个新的布尔值来修复这个问题不是一个好主意。主要是因为列表中有超过100个“Persons”,并且在这个listview中最多只能有5个项。@Maximc:如果您将原始类封装在拥有扩展属性的视图模型中,那么您当然不应该将视图相关属性放入模型类中。你可能听说过这种模式,叫做,现在正是它有用的时候。
 <System:Boolean x:Key="booexapnders">False          
        </System:Boolean>
  <ListView x:Name="lsvteamleft" SelectionChanged="lsvleft_SelectionChanged"  GotFocus="lsv_GotFocus" ScrollViewer.VerticalScrollBarVisibility="Visible">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <Expander Header="{Binding}" Margin="0,0,0,2" IsExpanded="{DynamicResource booexapnders}" >
                                    <Expander.HeaderTemplate>
this.Resources["booexapnders"] = true; // to expand all the expanders
this.Resources["booexapnders"] = false; // to colapse all the expanders