2

我的 中有一个ExpanderDataGrid但我只想显示两个项目,然后当用户单击展开时,显示剩余项目。

那怎么办?

<DataGrid.GroupStyle>
    <GroupStyle AlternationCount="7" >
        <GroupStyle.ContainerStyle>
            <Style TargetType="{x:Type GroupItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type GroupItem}">
                            <Expander IsExpanded="False" Background="{Binding XPath=recipient_color}">                                            
                                <Expander.Header>
                                    <Label Content="{Binding}">
                                    </Label>                                                
                                </Expander.Header>
                                <Expander.Content>
                                    <ItemsPresenter/>
                                </Expander.Content>
                            </Expander>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </GroupStyle.ContainerStyle>
    </GroupStyle>
</DataGrid.GroupStyle>
4

2 回答 2

0
  1. 在扩展器的标题中,添加您选择的控件,该控件能够显示列表的前 2 个项目。
  2. 将上述控件的可见性绑定到扩展器的“IsExpanded”属性上,使得扩展器展开时控件隐藏(使用IValueConverter)
  3. 构建扩展器的内容以显示所有项目。

这样,当扩展器未展开时,它将在标题中显示 2 个项目(根据您的喜好设置此样式)。当用户展开时,2 项消失,展开器展开并再次显示整个列表。

祝你好运!

于 2012-12-21T14:45:37.303 回答
0

但是,另一种需要更多摆弄xaml的方法是修改Expander控件模板。在MSDN上的控件模板中,您可以看到名为ContentRow. 该行的高度从 0 开始,然后IsExpanded属性上的触发器将其扩展到所需的高度。如果您将默认ContentRow高度设置为 50(或显示所需项目数量所需的任何高度),它将在展开器折叠时显示组项目的顶部。

您可以在此处阅读有关如何修改 ControlTemplates 的更多信息。

于 2012-12-21T15:28:20.147 回答