【发布时间】:2021-10-10 17:04:47
【问题描述】:
Editor 类型的 Text 属性使用了意想不到的方式来表示换行符。例如,在 Windows 上的 UWP 中,它使用 \r 而不是 Environment.NewLine 属性所宣传的 \r\n。这似乎是一些特定于平台的行为(但我希望 Windows 上的 UWP \r\n)。
网络上显示了有关此问题的一些信息,但当前版本中似乎没有解决方案: https://github.com/xamarin/Xamarin.Forms/pull/6823 https://github.com/xamarin/Xamarin.Forms/issues/3020
我真的很想规避这种行为,这样我就不必对我的视图模型处理进行一些修改。
我尝试创建一个IValueConverter,我在绑定中使用它并替换了虚假的换行符。这工作正常,但是在编辑器中带来了可用性问题(光标定位开始出错)。如果我可以设置 UpdateSourceTrigger,这将起作用,但是 Xamarin 似乎不支持。
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
if(value is string sv) {
if(sv.IndexOf("\r") > -1 && sv.IndexOf("\n") < 0) {
return sv.Replace("\r",Environment.NewLine);
}
}
return value;
}
我尝试的另一件事是将处理程序添加到Editor.Completed。这样做的问题是,绑定在事件之后执行,因此我的更改被撤消。
private void TextContent_Completed(object sender, EventArgs e) {
var vm= ...
vm.TextContent= XamarinNewlineRestorer.TransformToClrSpecific(vm.TextContent);
}
有人知道这个问题的解决方案吗?还是我误会了什么大事?
【问题讨论】:
标签: xamarin xamarin.forms xamarin.forms.editor