WPF如何在嵌套模板中获取控件

时间:2010-11-16 16:00:02

标签: c# wpf wpf-4.0

所以我看过很多很多例子,其中有人有一个漂亮的数据模板,其中有一个控件,他们的内容控件正在应用模板,他们的代码需要抓住它。

但我拥有的是:

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

你可以看到我有一个数据模板(frontTemplate)嵌套在另一个数据模板(flipItemTemplate)中。我需要做的是访问frontTemplate中的Stackpanel。我尝试访问该数据模板的内容演示者的所有尝试都失败了。我希望StackOverflow的明智圣人可以帮助我。如何以上帝的名义进入那个小组????

谢谢!

1 个答案:

答案 0 :(得分:3)

如果您的XAML定义如下:

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

您可以使用:

var template = mainGrid.FindResource("frontTemplate") as DataTemplate;
var stackPanel = template.LoadContent() as StackPanel;