如何在 Xamarin.Forms 中创建像日志控件一样工作的东西

How do I create something that works like a logging control in Xamarin.Forms

我正在寻找类似 Visual Studio 中的应用程序输出 window 的内容,如下所示:

我希望能够:

  1. 绑定到 ObservableCollection 个字符串
  2. select并复制文字(如上图所示)

目前这是针对 Mac 应用程序的,尽管 iOS 稍后可能会跟进。

我试过这些:

Editor - 问题是它只公开了我可以绑定的 Text 属性 而不是集合。迟早会达到最大字符串长度。

ListView with Label for ViewCell - 问题是来自 Label 的文本不 selectable,更不用说多行了(绑定集合项目)select能够。

为 Mac 使用自定义渲染器,它使用 NSTextView 并在每次添加新项目时附加到 textStorage可以添加到 textStorage.

我愿意使用 Syncfusion 等第三方工具,如果这样更容易的话。

自定义一个处理列表数据的方法,将它们组合成一个换行字符串:

public string formatstring(NSArray objects)
{
    StringBuilder stringBuilder = new StringBuilder();
    for(nuint i=0;i< objects.Count; i++)
    {
        stringBuilder.Append(objects.GetItem<NSString>(i) +"\n");
    }

    return stringBuilder.ToString();
}

然后在NSTextView中使用如下:

string[] items = new string[] {"111111" , "222222" , "333333" , "444444" , "555555" };
NSArray array = NSArray.FromStrings(items);
NSTextView textView = new NSTextView(new CGRect(100,160,200,100));
textView.BackgroundColor = NSColor.Gray;
textView.Value = formatstring(array);
View.AddSubview(textView);

效果: