如果我理解正確的話,你想要一個可擴展的行 在我的應用程序之一,我有類似如下:
第一行有一些細節,並通過點擊擴展列表填充在 爲了建立這個觀點我用它具有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或其他適合的東西。 但我認爲這是一個你應該看看的模型。
您是否考慮過使用ComboBox? – Funk