【问题标题】:Expander IsExpanded from dynamicresource, if manualy change not working anymoreExpander IsExpanded 从动态资源,如果手动更改不再起作用
【发布时间】:2012-02-15 00:00:19
【问题描述】:

经过大量搜索后,我想出了这段代码来通过代码扩展我的扩展器: 我是 XAML/WPF 的新手,所以很有可能我可以以更好的方式做到这一点,但经过大量搜索后,我很高兴我能正常工作(但还没有完全)

XAML: 将此添加到“标题”

 xmlns:System="clr-namespace:System;assembly=mscorlib"

然后将其添加到 Window.Recources

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

我可以向此列表视图添加多个项目,因此制作了多个扩展器。 在c#中我使用代码:

this.Resources["booexapnders"] = true; // to expand all the expanders
this.Resources["booexapnders"] = false; // to colapse all the expanders

例如,现在的问题是。我在列表视图中有 5 个项目,我想查看 1 的扩展版本,我用一个按钮将它们全部折叠(这可行)并在列表视图中手动展开我想要的项目(展开以查看更多信息),但是在我之后我刚刚手动展开的那个不会对“全部展开”或“全部折叠”按钮做出反应。

提前谢谢你。

【问题讨论】:

    标签: c# wpf xaml expander dynamicresource


    【解决方案1】:

    您应该将IsExpanded 绑定到您的项目上的一个属性,然后展开或折叠所有您遍历集合并更改所有项目的值,更改一个您只需为单个项目执行的操作,更多控制.

    【讨论】:

    • “在您的商品上”是什么意思?在我的课上?
    • @Maximc:关于集合中项目的类型,这是您的ListView 的来源。 (目前看起来您可能正在使用一个简单的字符串集合,您需要将其更改为适当的类,该类具有标题中显示的内容和扩展状态的属性)
    • 我使用一个类进行绑定。但是粘贴我所有的代码太复杂了,我有多个列表视图,有些没有扩展器,我有多个 ObservableCollections ^^(我制作的类)。这些项目是从 SQLite DB 加载的,我认为向类添加一个新的布尔值只是为了解决这个问题不是一个好主意。主要是因为列表有超过 100 个“人员”,在这个列表视图中最多只能有 5 个项目。
    • @Maximc:您会将原始类封装在拥有扩展属性的视图模型中,当然不应该将与视图相关的属性放入模型类中。您可能听说过这种称为MVVM 的模式,现在是时候派上用场了。
    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多