如何在 Xamarin.Forms 中创建像日志控件一样工作的东西
How do I create something that works like a logging control in Xamarin.Forms
我正在寻找类似 Visual Studio 中的应用程序输出 window 的内容,如下所示:
我希望能够:
- 绑定到
ObservableCollection
个字符串
- 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);
效果:
我正在寻找类似 Visual Studio 中的应用程序输出 window 的内容,如下所示:
我希望能够:
- 绑定到
ObservableCollection
个字符串 - 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);
效果: