wpf将datatemplate传递给新窗口

时间:2017-06-13 09:40:10

标签: wpf window datatemplate

我需要将DataTemplate发送到新窗口以进行打印。

1)我创建了一个常规窗口,将其命名为 PrintPreview ,其中包含以下内容:

FlowDocument > BlockUiContainer > ContentControl (负责显示我将发送给它的DataTemplate)

问题是datatemplate内部的绑定无法正常工作。 (并非适用于所有情况)

例如: 我在我的应用程序中的某个地方有这个数据模板

<DataTemplate x:Key="MyPrintPreview">
        <DockPanel>
            <TextBlock Text="{Binding SomeProperty1,RelativeSource={RelativeSource AncestorType=UserControl}}"></TextBlock>
            <TextBlock Text="{Binding Source={StaticResource SomeViewModel},Path=SomeProperty2}"></TextBlock>
        </DockPanel>
</DataTemplate>

上面的DataTemplate运行良好,并在我当前的View(UserControl)中显示这两个属性 但当我将此DataTemplate发送到新窗口PrintPreview时,我有以下问题

第一个TextBlock(SomeProperty1)无法显示内容

第二个TextBlock(SomeProperty2)显示得很好!

我不知道如何做这项工作。或者如果我做错了吗?

1 个答案:

答案 0 :(得分:1)

您应该将Content的{​​{1}}属性设置或绑定到包含ContentControl中的元素尝试绑定的属性的对象。

因此,将ContentTemplate的{​​{1}}属性设置为ContentTemplate,并将ContentControl属性设置为要绑定的实际对象。这是DataTemplate应该如何使用的方式。

另请注意,对于您的第一个绑定工作,Content必须是ContentControl的孩子,因为您绑定了父ContentControl的{​​{1}}。如果没有父UserControl,则绑定将始终失败。