Hallo,
Ich Möchte gerne einem DataGrid ein template geben jenach ausgewähltem item aus einer TreeView.
Ich lasse die TreeView dynamisch aufbauen daher enthät sie auch unterschiedliche Klassen als TreeViewItem.
ClassenBeispiel:
public Class Class1
{
ObservableCollection<Class2> ChildPages;
Name = "Element1";
public Clas1()
{
ChildPages.Add(new Class2());
}
}
public Clas Class2
{
ObservableCollection<Class2> ChildPages;
Name = "Element1.1";
}
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding ChildPages}">
<TextBlock Text="{Binding Name}" />
Nun möchte ich aus abhängig von der klasse des SelectedItem der TreeView ein Datagrid befüllen.
<DataGrid Template="{DynamicResource TMandator}">
Template des DataGrid
<Window.Resources>
<Style x:Key="GridStyle" TargetType="{x:Type DataGrid}" >
<Setter Property="Height" Value="500" />
<Setter Property="Width" Value="300" />
<Setter Property="AutoGenerateColumns" Value="False" />
<Setter Property="IsReadOnly" Value="False" />
<Setter Property="GridLinesVisibility" Value="All" />
<Setter Property="CanUserAddRows" Value="True" />
<Setter Property="CanUserDeleteRows" Value="True" />
<Setter Property="CanUserResizeColumns" Value="True" />
<Setter Property="CanUserResizeRows" Value="False" />
<Setter Property="CanUserReorderColumns" Value="False" />
</Style>
<ControlTemplate x:Key="Template">
<DataGrid ItemsSource="{Binding ElementName=TreeView1,
Path=SelectedItem.SelectedItem,
UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource GridStyle}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Width="*" FontSize="15"
Binding="{Binding Path=<!--Hier möchte ich die namen der untergeordneten Elemente anzeigen-->}" />
</DataGrid.Columns>
</DataGrid>
</ControlTemplate>
</Window.Resources>
Gelöst!!
Ich verwende nun ein ContentPresenter
<ContentPresenter Content="{Binding ElementName=PagesHost, Path=SelectedItem}" Grid.Column="1" Grid.Row="2">
<DataTemplate DataType="{x:Type MyClasses:Class1}">
<!-- Sachen darstellen-->
</DataTemplate>
</ContentPresenter>