gpt4 book ai didi

wpf - 使用 MVVM 在 WPF 中打印 TreeView

转载 作者:行者123 更新时间:2023-12-03 10:19:43 24 4
gpt4 key购买 nike

我有一个 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 显示为红色。我将它们分成三个文本框。

treeView 位于不同的 UserControl 中 - 我将其放入 SearchView (UC) 中。

现在我想打印 全部 这棵树上的结果。我更喜欢在打印文档时强调搜索结果为红色。

看起来像 this .

我试过 PrintDialog.PrintVisual .问题是我无法到达树或搜索表达式,因为 ViewModel 不知道 View 等。

虽然我在下面这段代码后面的代码中尝试了它,但它只打印他看到的内容,而不是整个树的结果。
PrintDialog dialog = new PrintDialog();
if (dialog.ShowDialog() != true)
return;
dialog.PrintVisual(SearchResultTree, "The Search Result Tree");

我也尝试了 的选项流文档 :
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);

10x 4 帮助!

最佳答案

The problem is that I can't reach the tree or the search expression because the ViewModel does not know the view etc.



使用 MVVM 时,View 和 ViewModel 之间的交互应该通过 INotifyPropertyChanged Interface 进行。 .
您可以将一个属性映射/绑定(bind)到一个 UI 元素;它会在 Set 上得到回调。

这是我在 mvvm-binding-treeview-item-changed 上的示例之一.希望有点用处。

关于wpf - 使用 MVVM 在 WPF 中打印 TreeView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11383147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com