Wenn ich es richtig verstanden habe, wollen Sie eine erweiterbare Reihe In einem meiner Anwendung, die ich so etwas wie unten haben:
Erste Zeile einige Details hat, und durch eine Liste auf der Expander Klick ist gefülltem . in um diese Ansicht zu bauen ich habe ein Datagrid verwendet, die die RowHeaderTemplate einen Expander gesetzt hat:
<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>
-Code hinter:
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;
}
}
}
Und für RowDetailsTemplate ich eine Vorlage haben, die ein anderes Datagrid ist, so etwas wie dies in den seltensten tags:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Itemsource = {Binding *property of parent viewmodel here*} />
</DataTemplate>
</DataGrid.RowDetailsTemplate>
Das Ergebnis ist im Bild -> eine erweiterbare Reihe, die in den Details ein zeigen Liste anderer Objekte. Sicher, Sie können ListView oder ItemsControl oder etwas anderes, das passt, verwenden. Aber ich denke, das ist ein Modell, das Sie sich anschauen sollten.
Haben Sie überlegt, eine ComboBox zu verwenden? – Funk