在WPF FlowDocument中嵌入自定义控件

本文关键字:自定义控件 WPF FlowDocument | 更新日期: 2023-09-27 18:05:47

是否有任何方法将自定义控件嵌入到flowdocument中,并由flowdocument查看器正确显示(将其导出到Xaml文本文件并通过查看器打开)?

在WPF FlowDocument中嵌入自定义控件

是使用BlockUIContainer或InlineUIContainer

<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:l="clr-namespace:MyNamespace;assembly=MyAssembly">
    <BlockUIContainer>
        <l:MyCustomControl/>
    </BlockUIContainer>
</FlowDocument>

请注意,无论您的查看器在哪里,都需要具有访问权限+信任才能使用带有自定义控件的程序集。实现这一点的最简单方法是将查看器与控件放在同一个程序集中。

如果您所说的自定义控件是指UserControl或从WPF控件继承的任何自定义控件,则不能:此自定义控件位于其自己的XML名称空间中,并且需要在程序集中部署代码。当您尝试解析文件时,XAML阅读器将无法访问它,并且不会成功。

您只能使用Microfost提供的控件,并与查看器一起部署。也许有可能让查看器知道部署在GAC中的程序集,但只有当您可以在客户端GAC中部署时,这才是一个解决方案。