【问题标题】:WP7 ContentPresenter passing DataContext to DataTemplateWP7 ContentPresenter 将 DataContext 传递给 DataTemplate
【发布时间】:2012-06-04 11:19:16
【问题描述】:

我有一个数据项:

<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,但没有运气。

有人有什么想法吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 是的。就是这样。如果我想在 ContentPresenter 是 ItemControls 中的项目时设置内容,我使用'Content="{Binding}"'。谢谢!!!
    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 2010-10-03
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    相关资源
    最近更新 更多