Xamarin绑定以使用Converter进行控制

时间:2019-08-20 03:31:52

标签: xamarin

我正在尝试创建一个文本框(编辑器),在其中键入文本时,该文本框将减少剩余的字符数并显示,例如:在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>

谁能看到哪里出了问题?

1 个答案:

答案 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));
    }