2

にがありますが、Expander2つのDataGridアイテムのみを表示したいので、ユーザーが[展開]をクリックしたときに残りのアイテムを表示します。

どうすればそれができますか?

<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 に答える