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 !!

War es hilfreich?

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top