WPF, wie die Steuerung in einer verschachtelten Vorlage erhalten
Frage
So habe ich gesehen, viele, viele Beispiele, in denen jemand eine raffinierte Datenvorlage mit einer Kontrolle in sich hat und deren Inhaltskontrolle ist die Anwendung der Vorlage und ihren Code hinter Bedürfnisse es zu packen.
Aber was ich habe, ist dies:
<DataTemplate x:Key="frontTemplate" >
<StackPanel x:Name="noWork">
<Image Source="Images/1.png" Stretch="Fill" Width="72" Height="96" x:Name="FrontFace" HorizontalAlignment="Left" VerticalAlignment="Top"></Image>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="flipItemTemplate">
<Grid Width="200" Height="200">
<Border x:Name="frontHost" Background="Transparent">
<ContentPresenter Content="{Binding}" ContentTemplate="{StaticResource frontTemplate}" />
</Border>
</Grid>
</DataTemplate>
Sie sehen, dass ich eine Datenvorlage (Frontschablone) verschachtelte innerhalb eines anderen Datenvorlage haben (flipItemTemplate). Was ich tun müssen, ist erhalten Sie Zugriff auf die Stackpanel in Frontschablone. Alle meine Versuche, den Inhalt Moderator zu bekommen für die Datatemplate gescheitert. Ich hoffe, dass die klugen Weisen von Stackoverflow kann mir helfen. Wie in Gottes Namen würde ich zu diesem Panel bekommen ????
Danke !!
Lösung
If your XAML is defined like this:
<Grid Name="mainGrid">
<Grid.Resources>
<DataTemplate x:Key="frontTemplate" >
<StackPanel x:Name="noWork">
<Image Source="Images/1.png" Stretch="Fill" Width="72" Height="96" x:Name="FrontFace" HorizontalAlignment="Left" VerticalAlignment="Top"></Image>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="flipItemTemplate">
<Grid Width="200" Height="200">
<Border x:Name="frontHost" Background="Transparent">
<ContentPresenter Name="contentPresenter" Content="{Binding}" ContentTemplate="{StaticResource frontTemplate}" />
</Border>
</Grid>
</DataTemplate>
</Grid.Resources>
</Grid>
You can use:
var template = mainGrid.FindResource("frontTemplate") as DataTemplate;
var stackPanel = template.LoadContent() as StackPanel;