我正在使用一个RichTextBox,它可以包含图像。我使用OpenFileDialog
导入它们,然后将它们放入InlineUIContainer
。
它会显示出来,xaml代码如下所示。
<Paragraph>
<Image Source="file://C:/Path/Test.png" Stretch="Fill" Width="200" Height="100" />
</Paragraph>
字符串
我可以保存我的xaml文档在数据库中,关闭它,并再次打开它没有任何问题,图像仍然会显示。
但是如果我把图像从文档中移走,或者复制并粘贴它,我的xaml代码就会变成如下所示:
<BlockUIContainer>
<Image Stretch="Fill" Width="200" Height="100">
<Image.Source>
<BitmapImage BaseUri="pack://payload:,,wpf3,/Xaml/Document.xaml" UriSource="./Image1.png" CacheOption="OnLoad" />
</Image.Source>
</Image>
</BlockUIContainer>
型
它现在包含在一个BlockUIContainer中,我不想将其用于显示目的,但这不是我的更大问题,因为我丢失了ImageSource,因此无法再次显示它们。
你有什么解决方案来防止这种行为吗?
我尝试用DataObject.AddCopyingHandler
et DataObject.AddPastingHandler
拦截Copy and Paste事件,但无法获得所需的结果。
我也发现这个问题Saving source string of image in richtextbox after moving or pasting from clipboard有类似的问题,但我不明白“保存到XAML包”是什么意思。
1条答案
按热度按时间cnh2zyt31#
根据文档,
DataFormats.XamlPackage
指定可扩展应用程序标记语言(XAML)包数据格式。
换句话说,这种格式可以将文档保存为打包的
xaml
。实际上,这是存档文件:二进制文件因此,您可以获取字节数组并作为二进制数据(
varbinary
)保存到数据库,并在必要时将其加载到RichTextBox
返回。下面你可以找到一些示例,演示如何使用此格式从
RichTextBox
保存/加载文档,以保存和恢复包含图像的文档。MainWindow.xaml
:字符串
MainWindow.xaml.cs
:型