2

テキスト ファイルからテキスト検索結果を返すための treeView があります。

<TreeView ItemsSource="{Binding FirstGeneration}"
             ...>
  <TreeView.ItemContainerStyle.../>
  <TreeView.ItemTemplate>
    <HierarchicalDataTemplate ItemsSource="{Binding Children}">
      <StackPanel Orientation="Horizontal" FlowDirection="LeftToRight">
        <TextBlock Text="{Binding PreExp}" />
        <TextBlock Text="{Binding Exp}"
          FontStyle="{Binding FontStyle}"
          Foreground="{Binding Color}"  />
        <TextBlock Text="{Binding PostExp}" />
      </StackPanel>
    </HierarchicalDataTemplate>
  </TreeView.ItemTemplate>
</TreeView>

結果をツリーとして取得するには (C++ プロジェクトから結果をリストとして取得するため)、論理ツリーを作成し、exp を赤で表示します。それらを 3 つの textBoxes に分けました。

treeView は別の UserControl にあります - そして私はそれを SearchView (UC) に入れました。

ここで、すべての結果をこのツリーに出力したいと思います。検索結果が赤く強調された状態で文書が印刷されることを好みます。

こんな感じです

PrintDialog.PrintVisualを試しました。問題は、ViewModel がビューなどを知らないため、ツリーや検索式にたどり着けないことです。

以下のこのコードの背後にあるコードで試してみましたが、ツリー全体の結果ではなく、彼が見ているものだけを出力します。

PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() != true)
  return;
dialog.PrintVisual(SearchResultTree, "The Search Result Tree");

また、 FlowDocumentでオプションを試しました:

FlowDocument doc = new FlowDocument();
foreach (SearchObjectViewModel item in tv.Items)
  doc.Blocks.Add(new Paragraph(new Run(item.PreExp+item.Exp+item.PostExp)));
pd.PrintDocument(((IDocumentPaginatorSource)doc).DocumentPaginator,exp);

10x4 助けて!

4

1 に答える 1

0

問題は、ViewModel がビューなどを知らないため、ツリーや検索式にたどり着けないことです。

MVVM を使用する場合、View と ViewModel の間の対話はINotifyPropertyChanged Interfaceを介して行われる必要があります。1 つのプロパティを 1 つの UI 要素にマップ/バインドできます。Set でコールバックを取得します。

これはmvvm-binding-treeview-item-changedに関する私の例の 1 つです。それがいくつかの使用であることを願っています。

于 2013-02-25T04:16:14.577 に答える