C# 使用MVVMCross对属性进行条件绑定

C# 使用MVVMCross对属性进行条件绑定,c#,ios,xamarin,xamarin.ios,mvvmcross,C#,Ios,Xamarin,Xamarin.ios,Mvvmcross,使用mvvmcross绑定实现以下功能的最佳方法是什么: if (ViewModel.NumberOfUsers > 1) set.Bind (NumberOfUsersLabel).To ("NumberOfUsers + ' Users'"); else set.Bind (NumberOfUsersLabel).To ("NumberOfUsers + ' User'"); 非常感谢你的帮助 我只想创建一个在视图模型中具有getter的属性 public string Nu

使用mvvmcross绑定实现以下功能的最佳方法是什么:

if (ViewModel.NumberOfUsers > 1)
  set.Bind (NumberOfUsersLabel).To ("NumberOfUsers + ' Users'");
else
  set.Bind (NumberOfUsersLabel).To ("NumberOfUsers + ' User'");

非常感谢你的帮助

我只想创建一个在视图模型中具有getter的属性

public string NumberOfUsersFormatted { get { return NumberOfUsers + " user"; } }
然后在ViewDidLoad中:

set.bind(NumberOfUsersLabel).To(NumberOfUsersFormatted);
然后,可以在视图模型属性中添加任何附加检查


如果您不喜欢,您也可以设置自己的ValueConverter,在其后面添加正确的单词。

我只需要创建一个在视图模型中具有getter的属性

public string NumberOfUsersFormatted { get { return NumberOfUsers + " user"; } }
然后在ViewDidLoad中:

set.bind(NumberOfUsersLabel).To(NumberOfUsersFormatted);
然后,可以在视图模型属性中添加任何附加检查


如果您不喜欢,您也可以设置自己的ValueConverter,在其中添加正确的单词。

通常,Mvvm开发人员在ValueConverter中执行这种格式设置

有关这方面的更多信息,请参阅

这包括time ago示例,该示例显示如何根据当前值更改字符串:

public class MyTimeAgoValueConverter : MvxValueConverter<DateTime, string>
{
    protected override string Convert(DateTime value, Type targetType, object parameter, CultureInfo cultureInfo)
    {
        var timeAgo = DateTime.UtcNow - value;
        if (timeAgo.TotalSeconds < 30)
        {
            return "just now";
        }

        if (timeAgo.TotalMinutes < 10)
        {
            return "a few minutes ago";
        }

        if (timeAgo.TotalMinutes < 60)
        {
            return "in the last hour";
        }

        if (timeAgo.TotalMinutes < 24*60)
        {
            return "in the last day";
        }

        return "previously";            
    }
}

通常,Mvvm开发人员在ValueConverter中执行这种格式设置

有关这方面的更多信息,请参阅

这包括time ago示例,该示例显示如何根据当前值更改字符串:

public class MyTimeAgoValueConverter : MvxValueConverter<DateTime, string>
{
    protected override string Convert(DateTime value, Type targetType, object parameter, CultureInfo cultureInfo)
    {
        var timeAgo = DateTime.UtcNow - value;
        if (timeAgo.TotalSeconds < 30)
        {
            return "just now";
        }

        if (timeAgo.TotalMinutes < 10)
        {
            return "a few minutes ago";
        }

        if (timeAgo.TotalMinutes < 60)
        {
            return "in the last hour";
        }

        if (timeAgo.TotalMinutes < 24*60)
        {
            return "in the last day";
        }

        return "previously";            
    }
}