0

我一直试图在 WPF 中找到一个与DataFormats类等效的 UWP,它具有Xaml数据格式字段——或者 UWP 中是否有解决方法?

如上面的链接所示,是 WPF类Xaml中的一种数据格式。DataFormats但到目前为止,我还没有在 UWP 中找到这样的等价物。UWP 中的StandardDataFormats类未列Xaml为其数据格式之一。

动机

WPF与此处显示的示例类似: TextRange.Save 方法,我正在尝试将以下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);
   }
}
4

1 回答 1

0

UWP 的TextRange结构没有命名方法Save,因此您的问题没有实际意义。

据我所知,UWP 不(很容易)支持在运行时操作 XAML 标记(例如,没有XamlWriter类,也没有用于操作 XAML 的 API,虽然Windows.UI.Xaml.Markup.XamlReader并且XmlBinaryWriter可用,但它们似乎不适合应用程序开发人员使用,但适用于构建过程)。

如果您想以TextRange维护文档结构的方式序列化 UWP,我认为您需要使用一些自定义逻辑自己序列化(和反序列化)它(尽管我想知道如果您将TextRange实例传递给JsonConvert.SerializeObject( ... )...会发生什么)。

于 2019-04-14T19:29:02.350 回答