如何绑定使用转换器格式化的文本
本文关键字:转换器 格式化 文本 何绑定 绑定 | 更新日期: 2023-09-27 18:32:55
我有两个关键字列表,我必须显示一个字符串,其中不常用单词为白色,常用单词为橙色。
我做了一个转换器来做到这一点。一开始,我尝试制作一个 SpannableString 来返回带有一些颜色属性的字符串,但绑定似乎很复杂,所以我尝试在我的字符串中放入一些 html 代码并返回一个 ISpanned 字符串。
它有效,但什么都没有显示,我不明白为什么...
为了进行绑定,我使用以下代码:
set.Bind(poiDisplayer).For(s=>s.Text).To(vm => vm.CurrentMember.Member.PostedBy.Interests).WithConversion(new CommonPOIConverter(ViewModel.CurrentMember.Member.Interests)).WithFallback(new List<Interests>());
转换器是这样的:
protected override ISpanned Convert(List<Interests> value, Type targetType, object parameter, CultureInfo culture)
{
string finalString = ""; string tmpString = "";
for (int i = 0; i < value.Count; i++)
{
tmpString = "";
foreach (var item in myInterestes)
{
if (item.Name == value[i].Name)
{
tmpString += "<font color='"orange>'"#" + value[i].Name + "</> ";
break;
}
}
if (tmpString.Length == 0)
tmpString += "<font color='"white>'"#" + value[i].Name + "</> ";
finalString += tmpString;
}
return Html.FromHtml(finalString);
}
关于如何使这项工作的任何想法?
考虑到您的MvxValueConverter
按预期工作,您需要将值绑定到 TextFormatted
属性而不是 Text
,如下所示:
set.Bind(poiDisplayer).For(s=>s.TextFormatted).To(vm => vm.CurrentMember.Member.PostedBy.Interests).WithConversion(new CommonPOIConverter(ViewModel.CurrentMember.Member.Interests)).WithFallback(new List<Interests>());