我一直试图在WPF中找出与Xaml
作为数据格式字段的DataFormats类等效的UWP-或者在UWP中可能有解决方法?
如上面的链接所示,Xaml
是WPF DataFormats
类中的一种数据格式。但是到目前为止,我还没有在UWP中找到这样的功能。 UWP中的StandardDataFormats类未将Xaml
列为其数据格式之一。
动机:
类似于此处显示的WPF
示例:TextRange.Save method,我正在尝试将以下WPF
代码转换为UWP
代码。但是,正如您在行range.Save(outputStream, DataFormats.Xaml);
上看到的那样,将范围选择保存到内存流时,WPF代码使用Xaml
作为数据格式:
....
var doc = new FlowDocument();
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
using (var outputStream = new MemoryStream())
{
range.Save(outputStream, DataFormats.Xaml);
outputStream.Position = 0;
using (var xamlStream = new StreamReader(outputStream))
{
var xaml = xamlStream.ReadToEnd();
File.WriteAllText(xamlFileName, xaml);
}
}
答案 0 :(得分:0)
UWP的TextRange
结构没有名为Save
的方法,因此您的问题尚无定论。
据我所知,UWP不(轻松地)在运行时支持XAML标记的操作(例如,没有XamlWriter
类,并且没有{API {1}}和{ {1}}可用,它们似乎不是供应用程序开发人员使用的,而是用于构建过程的。)
如果您要以维持文档结构的方式序列化UWP Windows.UI.Xaml.Markup.XamlReader
,我想您需要使用一些自定义逻辑序列化(和反序列化)自己(尽管我想知道如果通过验证会发生什么情况) XmlBinaryWriter
实例到TextRange
...)。