如果我理解正确,您需要一个可展开的行
在我的一个应用程序中,我有如下内容:
第一行有一些详细信息,通过单击扩展器会填写一个列表。
为了构建这个视图,我使用了一个将 RowHeaderTemplate 设置为扩展器的 DataGrid:
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<telerik:RadExpander x:Name="AddressExpander" telerik:AnimationManager.IsAnimationEnabled="True" Expanded="Address_Expander_Expanded" Collapsed="Address_Expander_Collapsed">
</telerik:RadExpander>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
后面的代码:
private void Address_Expander_Expanded(object sender, RoutedEventArgs e)
{
var s = e.OriginalSource as FrameworkElement;
var expander = s as RadExpander;
if (expander != null)
{
var parentRow = s.ParentOfType<DataGridRow>();
if (parentRow != null)
{
parentRow.IsSelected = true;
parentRow.DetailsVisibility = Visibility.Visible;
}
}
}
private void Address_Expander_Collapsed(object sender, RoutedEventArgs e)
{
var s = e.OriginalSource as FrameworkElement;
var expander = s as RadExpander;
if (expander != null)
{
var parentRow = s.ParentOfType<DataGridRow>();
if (parentRow != null)
{
parentRow.IsSelected = false;
parentRow.DetailsVisibility = Visibility.Collapsed;
}
}
}
对于 RowDetailsTemplate,我有一个模板,它是另一个 DataGrid,在很少的标签中是这样的:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Itemsource = {Binding *property of parent viewmodel here*} />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
结果在图片中 -> 一个可展开的行,可以在详细信息中显示其他对象的列表。当然,您可以使用 ListView 或 ItemsControl 或任何其他适合的东西。
但我认为这是一个你应该看看的模型。