我需要将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)显示得很好!
我不知道如何做这项工作。或者如果我做错了吗?
答案 0 :(得分:1)
您应该将Content
的{{1}}属性设置或绑定到包含ContentControl
中的元素尝试绑定的属性的对象。
因此,将ContentTemplate
的{{1}}属性设置为ContentTemplate
,并将ContentControl
属性设置为要绑定的实际对象。这是DataTemplate
应该如何使用的方式。
另请注意,对于您的第一个绑定工作,Content
必须是ContentControl
的孩子,因为您绑定了父ContentControl
的{{1}}。如果没有父UserControl
,则绑定将始终失败。