【问题标题】:Xamarin Binding to control with ConverterXamarin Binding 以使用 Converter 进行控制
【发布时间】:2019-08-20 13:37:06
【问题描述】:

我正在尝试创建一个文本框(编辑器),当人们在其中键入时,它会减少剩余的字符数并显示,例如:标签中的“剩余 56 个字符”。我知道如何编写 Converter ,但目前调用 Converter 时的 value 参数是 null。转换器的参数如预期的那样是200。即使我删除了 Editor Binding 并将其设置为 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>

谁能看出哪里出了问题?

【问题讨论】:

    标签: xamarin


    【解决方案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));
        }
    

    【讨论】:

    • 工作谢谢。没有意识到我可以像那样访问 Text 的“.Length”属性。标记为答案。
    猜你喜欢
    • 2020-08-30
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2015-11-05
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多