如何在数据网格中显示多个列表视图
问题描述:
在我的程序中,我目前有一个带修改的行模板的数据网格,它显示了一个列表视图。因此,当用户在数据网格中选择一行时,该行将展开并显示列表视图,并且当用户选择不同的行时,原始列表将折叠并且新行的列表将展开。我现在被要求让它允许扩展多个列表视图,但我不确定如何做到这一点。如何在数据网格中显示多个列表视图
我的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>
所以我在我的DataGrid中显示的账户列表,以及每个账户有其是在当选择一个帐户出现的列表视图中显示的详细信息列表。当我选择其他账户时,如何保持listview中最初选择的账户的详细信息可见?
答
如果您希望先前选定的行的detailsTemplate保持可见,您可以尝试这样做。您订阅的RowDetailsVisibilityChanged事件的DataGrid像
<DataGrid RowDetailsVisibilityChanged="DataGrid_RowDetailsVisibilityChanged_1">
.......
........
</DataGrid>
private void DataGrid_RowDetailsVisibilityChanged_1(object sender, DataGridRowDetailsEventArgs e)
{
e.Row.DetailsVisibility= Visibility.Visible;
}
我希望这将有助于。
你期待什么?如果RowDetails在其他行被选中后仍然可见 – ethicallogics
你就是我想要的 – emybob