【问题标题】:How to show multiple list views within a datagrid如何在数据网格中显示多个列表视图
【发布时间】:2013-08-22 14:52:34
【问题描述】:

在我的程序中,我目前有一个带有修改后的行模板的数据网格,它显示一个列表视图。因此,当用户在数据网格中选择一行时,该行会展开并显示一个列表视图,而当用户选择不同的行时,原始列表会折叠,新行的列表会展开。我现在被要求让它允许扩展多个列表视图,但我不确定如何做到这一点。

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

所以我的数据网格中显示了一个帐户列表,每个帐户都有一个详细信息列表,该列表显示在选择帐户时出现的列表视图中。如何在选定其他帐户时将详细信息从ListView中的最初选定的帐户中保留细节?

【问题讨论】:

  • 您期待什么?选择其他行后,RowDetails 是否应该保持可见
  • 是的,这就是我想要的

标签: wpf xaml listview datagrid


【解决方案1】:

如果您希望先前选定行的详细信息模板保持可见,您可以尝试这样。您订阅 DataGrid 的 RowDetailsVisibilityChanged 事件,如

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

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

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多