WP7 ContentPresenter将DataContext传递给DataTemplate

时间:2012-06-04 11:19:16

标签: windows-phone-7 xaml data-binding

我有一个数据项:

<SampleData:Item Title="Evening News" Channel="ABC" x:Key="sampleData0" />

在我的xaml页面中,我有一个显示此项目的ContentPresenter。

<ContentPresenter ContentTemplate="{StaticResource dt1}" />

以下是数据模板 dt1

    <DataTemplate x:Key="t2">
        <Grid Background="#FF5599DD" DataContext="{StaticResource sampleData0}"  >
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>              
            <TextBlock Text="{Binding Title}" />
            <TextBlock Text="{Binding Channel}" Grid.Row="1" />             
        </Grid>         
    </DataTemplate>

一切正常。但我想将数据模板放入我的dictionary.xaml文件中,因此我必须将数据上下文从DataTemplate移动到ContentPresenter中。

现在我的ContentPresenter看起来像这样:

<ContentPresenter ContentTemplate="{StaticResource dt1}" DataContext="{StaticResource sampleData0}" />

数据模板如下所示:

    <DataTemplate x:Key="t2">
        <Grid Background="#FF5599DD">
            <Grid.RowDefinitions>
                <RowDefinition/>
                <RowDefinition/>
            </Grid.RowDefinitions>              
            <TextBlock Text="{Binding Title}" />
            <TextBlock Text="{Binding Channel}" Grid.Row="1" />             
        </Grid>         
    </DataTemplate>

但这不起作用!

我已经尝试过RelativeSource但没有运气。

有人有任何想法吗?

1 个答案:

答案 0 :(得分:3)

而不是在DataContext上设置ContentPresenter设置Content属性。像这样:

<ContentPresenter Content="{StaticResource sampleData0}"
                  ContentTemplate="{StaticResource dt1}"/>