我正在尝试创建一个文本框(编辑器),在其中键入文本时,该文本框将减少剩余的字符数并显示,例如:在Label中显示“剩余的56个字符”。我知道如何编写Converter,但是当前调用Converter时的 value 参数为 null 。转换器的参数为 200 。即使删除了编辑器绑定并将其设置为Text =“ Hello”,调用Converter时该值仍为null。
标签和编辑器的定义如下:
<Label
BindingContext="{x:Reference CommentEditor}"
Text="{Binding Path=Text,
Converter={StaticResource CharactersRemainingConverter}, ConverterParameter=200}"/>
<Editor
x:Name="CommentEditor"
Text="{Binding Comment}"
Placeholder="Comment up to 200 characters"
MaxLength="200">
</Editor>
谁能看到哪里出了问题?
答案 0 :(得分:1)
您可以这样更改:
<ContentPage.Resources>
<ResourceDictionary>
<local:CharactersRemainingConverter x:Key="charactersRemainingConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<Label
BindingContext="{x:Reference CommentEditor}"
Text="{Binding Path=Text.Length,
Converter={StaticResource charactersRemainingConverter}, ConverterParameter=200}"/>
<Editor
x:Name="CommentEditor"
Text="{Binding Comment}"
Placeholder="Comment up to 200 characters"
MaxLength="200">
</Editor>
在您的 CharactersRemainingConverter 中:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return string.Format("{0} characters remaining",(int.Parse((string)parameter) - (int)value));
}