3

私のプログラムでは、現在、リストビューを表示する行テンプレートが変更されたデータグリッドがあります。したがって、ユーザーがデータグリッドの行を選択すると、その行が展開されてリスト ビューが表示されます。ユーザーが別の行を選択すると、元のリストが折りたたまれ、新しい行のリストが展開されます。複数のリスト ビューを展開できるようにするように依頼されましたが、これを行う方法がわかりません。

私のxamlコード:

<DataGrid ItemsSource="{Binding Path=Accounts}" SelectedItem="{Binding Path=SelectedAccount}" AutoGenerateColumns="False"
              CanUserAddRows="False" CanUserDeleteRows="False" Width="Auto">
        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <ListView MaxHeight="200" ItemsSource="{Binding Path=DataContext.SelectedAccount.Details, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"
                          SelectedItem="{Binding Path=DataContext.SelectedDetail, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" 
                          Tools:GridViewSort.AutoSort="True" >
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Account" DisplayMemberBinding="{Binding Path=AccountCode}" 
                                            Tools:GridViewSort.PropertyName="AccountCode" Width="Auto" />

                            <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=Description}"
                                            Tools:GridViewSort.PropertyName="Description" Width="Auto"/>                                  
                        </GridView>
                    </ListView.View>
                    <ListView.Style>
                        <Style TargetType="ListView">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=DataContext.SelectedAccount.Details.Count, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" Value="0">
                                    <Setter Property="Visibility" Value="Collapsed" />
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </ListView.Style>
                </ListView>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
        <DataGrid.Columns>
            <DataGridTextColumn Header="Account" Binding="{Binding Path=AccountCode}"/>
            <DataGridTextColumn Header="Title" Binding="{Binding Path=AccountTitle}" />
        </DataGrid.Columns>
    </DataGrid>

したがって、データグリッドに表示されるアカウントのリストがあり、各アカウントには、アカウントが選択されたときに表示されるリストビューに表示される詳細のリストがあります。他のアカウントが選択されているときに、リストビューで最初に選択したアカウントの詳細を表示し続けるにはどうすればよいですか?

4

1 に答える 1

0

以前に選択した行の detailsTemplate を表示したままにしたい場合は、このように試すことができます。次のように、DataGrid のRowDetailsVisibilityChangedイベントをサブスクライブします。

<DataGrid  RowDetailsVisibilityChanged="DataGrid_RowDetailsVisibilityChanged_1">
        .......
        ........
    </DataGrid>

private void DataGrid_RowDetailsVisibilityChanged_1(object sender, DataGridRowDetailsEventArgs e)
    { 
        e.Row.DetailsVisibility= Visibility.Visible;
    }

これが役立つことを願っています。

于 2013-08-20T15:02:05.820 に答える