2017-06-13 2 views
0

印刷目的でDataTemplateを新しいウィンドウに送信する必要があります。wpf datatemplateを新しいウィンドウに渡します。

はFlowDocumentは> BlockUiContainer> ContentControlに(私はそれにDataTemplateを表示する責任

お送りします:私は、一般的なウィンドウを作成してい

1)は、以下を保持しているという名前を付けPrintPreviewをすることができます)

問題は、データ・テンプレート内のバインディングが機能していないことです。例えば

(すべてではない場合のために): 私は上記の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をを持っています私は第一のTextBlock(SomeProperty1)は、コンテンツ

に第二の表示に失敗し、私は次の問題を持っている新しいウィンドウPrintPreviewに

このDataTemplateをを送信しますTextBlock(SomeProperty2)はうまく表示されます!

この作業の仕方はわかりません。それを間違ってやっているのであれば?

答えて

1

ContentControlContentプロパティを、ContentTemplateの要素がバインドしようとするプロパティを含むオブジェクトに設定またはバインドする必要があります。

は、だからあなた DataTemplateContentControlContentTemplateプロパティを設定し、に結合する実際のオブジェクトに Contentプロパティを設定します。これが ContentControlの使用方法です。

はまた、あなたの第一の結合動作するためにあなたが親UserControlSomeProperty1に結合されているので、ContentControlUserControlの子でなければならないことに注意してください。親UserControlがない場合、バインディングは常に失敗します。

+0

ありがとうございますが、なぜプロパティ2が機能していますか? SomeViewModelリソースは、現在のビューであるユーザーコントロールレベルでも定義されています。 – user2160275

+0

DataContextに依存しているのではなく、明らかに範囲内にあるリソース上にあります。 – mm8

関連する問題