MvvmCross动态文本值转换

2024-01-11

据我所知,MvvmCross 本地化插件提供“静态”引擎。我使用以下来自 Conference 的绑定作为示例:

local:MvxBind="{'Text'{'Path':'TextSource','Converter':'Language','ConverterParameter':'SQLBitsXApp'}}"

我希望能够改变SQLBitsXApp to SQLBitsXApp2动态地。 目标是找到与天枚举相关的本地化文本。

有没有办法动态地做到这一点?


你是对的 - 该绑定中使用的默认 MvxLanguageConverter 实际上仅适用于简单的静态文本。

对于更复杂的情况,您将需要为每种情况构建自己的转换器 - 但希望其中一些可以重复使用。

作为起始示例,请查看会议示例如何使用以下命令显示推文时间TimeAgoConverter.cs https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.Core/Converters/TimeAgoConverter.cs

public class TimeAgoValueConverter
    : MvxBaseValueConverter
      , IMvxServiceConsumer<IMvxTextProvider>
{
    private IMvxTextProvider _textProvider;
    private IMvxTextProvider TextProvider
    {
        get
        {
            if (_textProvider == null)
            {
                _textProvider = this.GetService<IMvxTextProvider>();
            }
            return _textProvider;
        }
    }

    public override object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        var when = (DateTime)value;

        string whichFormat;
        int valueToFormat;

        if (when == DateTime.MinValue)
        {
            whichFormat = "TimeAgo.Never";
            valueToFormat = 0;
        }
        else
        {
            var whenUtc = when.ToUniversalTime();
            var difference = (DateTime.UtcNow - whenUtc).TotalSeconds;
            if (difference < 30.0)
            {
                whichFormat = "TimeAgo.JustNow";
               valueToFormat = 0;
            }
            // ... etc
        }

        var format = TextProvider.GetText(Constants.GeneralNamespace, Constants.Shared, whichFormat);
        return string.Format(format, valueToFormat);
    }
}

这在 Android axml 中使用,如https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Resources/Layout/ListItem_Tweet.xml https://github.com/slodge/MvvmCross/blob/vnext/Sample%20-%20CirriousConference/Cirrious.Conference.UI.Droid/Resources/Layout/ListItem_Tweet.xml:

<TextView
 android:id="@+id/TimeTextView"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:textSize="10dip"
 android:textColor="@color/icongrey"
  local:MvxBind="{'Text':{'Path':'Item.Timestamp','Converter':'TimeAgo'}}"
   />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MvvmCross动态文本值转换 的相关文章

  • 录制视频/音频时播放系统声音

    当我开始录制视频时 我试图按照苹果的要求播放 嘟嘟 声 我通过 SO 和其他来源发现 当您有音频输入而没有进行某些配置时 您无法播放声音 这是我尝试的配置方法 private void SetupAudio beepSound AssetB
  • Monotouch如何管理资源(字符串、图像等)?

    在 Android 中 我将应用程序字符串放入名为的文件中strings xml 例如 对于意大利语翻译 我需要创建一个 value it 文件夹并放入strings xml在此新文件夹中包含带有意大利语标签的文件 Monotouch 如何
  • 在 WP7 中,当页面上存在 WebBrowser 控件时,TextBox.Focus() 不起作用

    我需要将焦点设置在文本框上 问题是 当页面上存在 WebBrowser 控件时 SIP 会显示为就像选择了文本框一样 但光标在文本框中不可见 并且输入不会转到文本框 如果我注释掉 WebBrowser 控件 则行为如预期 加载页面时光标在文
  • sqlite.net + monotouch = SIGSEGV 崩溃

    我们正在使用以下内容 Xamarin 3 Xamarin 表单 单点触控 sqlite net iOS模拟器 硬件 该应用程序在后台线程上与服务器同步数据 整个应用程序只共享一个 SQLite 连接对象 前台查询在后台同步运行的同时执行 所
  • 使用 xamarin 和 c# 更改 android 上的cultureinfo

    我调用自定义方法来动态地将当前文化信息切换为法语 fr 像这样 但在调用该方法后 我的 Android 应用程序仍然使用默认区域性 en 但在调试模式下 区域性似乎没问题 我的文件夹没问题 我两者都有 并且字符串值已配置 文件夹 resou
  • 启动注册期间无法加载程序集“System.Buffers”

    我的 Xamarin 表单应用程序大约 5 分钟前运行 然后突然停止工作 应用程序启动后立即关闭 下面显示了 Visual Studio 输出中的消息显示 Assembly Loader probing location System Bu
  • Windows Phone - 运行时的 Storyboard TargetName

    如何在运行时为 DoubleAnimationUsingKeyFrames 设置 TargetName
  • Android 模拟器无法与 Xamarin/Visual Studio Mac 配合使用

    你好 我真的很难让 Android 模拟器在我的 Mac 上运行 我需要采取哪些步骤才能使其正常工作 我在 MacOS Catalina 上安装了 Visual Studio 2019 这是一个新的空白 Xamarin Forms 项目 我
  • Windows Phone 7 - ScrollViewer 值已更改

    我一直在寻找解决方案 但无法找到正确的解决方案 我的网格宽度为 960 并且有ScrollViewer在里面 现在我想知道滚动时滚动的值 水平偏移 我找到的所有解决方案都是针对 wpf silverlight 的 它对我不起作用 Edit
  • Web 视图中的 Cookie xamarin iOS

    我想在网络视图中设置cookie 对此有什么帮助吗 NSUrl urlq new NSUrl url webview new UIWebView webview LoadRequest new NSUrlRequest urlq webvi
  • 预览 Xamarin 表单页面

    有没有办法在不先部署到设备 模拟器的情况下预览 Xamarin 表单页面 或者有什么方法可以实时编辑页面并查看某处的更改 有点像 WPF 的史努比 我尝试了 Xamarin Studio Visual Studio 但没有看到设计器 201
  • 在 Xamarin.Forms 上的图像顶部叠加标签、列表和按钮

    我想制作一个页面 其中有一张图片 基本上页面上的其他所有内容都位于图像之上 与此类似的东西 XAML 代码如下
  • 如果 html5

    我的应用程序隔离存储中有视频文件 并且想使用视频标签从 html 播放它 视频播放器运行 然后挂在 正在加载 有人可以设法使用 html5 视频标签和独立存储来播放视频吗 我的观察和测试 HTC HD7 Mango Beta 2 7 10
  • 如何在 xamarin.android 中创建新的密钥库?

    我正在尝试发布 xamarin android 应用程序 我正在使用 Visual Studio 和 Xamarin Android 6 所以我遵循this https developer xamarin com guides androi
  • xaml.cs 文件上的 InitializeComponent() 出现错误

    有时我会收到一个红色错误 内容如下 InitializeComponent 在当前上下文中不存在 以及我的其他变量 xaml受约束的x Name The x ClassXaml 文件中的名称空间和类名确实对应于我的xaml cs file
  • 如何在wp7中自动启动应用程序而无需用户实际单击图标

    我是wp7新手 我想创建一个无需用户启动即可自动启动的应用程序 类似于任何 PC 上的自动病毒扫描 请提出任何建议 一个很好的代码示例会让我更好地理解 谢谢 不可能 感谢微软没有让这一切成为可能
  • Android 应用程序和 MySql 连接无法连接。打开

    当我尝试打开连接时发生错误并显示 System TypeInitializationException MySql Data MySqlClient Replication ReplicationManager 的类型初始值设定项引发异常
  • 如何在 WP7 应用程序磁贴中隐藏应用程序标题

    我不想在 Windows Phone 7 的磁贴中显示应用程序名称 就像 Netflix 或 Facebook 应用程序那样 但当我尝试将其设置为空 甚至是空白区域 时 Visual Studio 抱怨标题为空不允许 知道如何实现这一目标吗
  • System.Net.Http.HttpClient 不尊重超时并每次使用默认值

    我正在使用 HttpClient 与具有大量 api 的 Web 服务 由我的公司编写 进行交互 所有 api 都工作得很好 除非其中一个 较大且较慢的 需要超过 100 秒才能给出答案 过了那个时间我收到以下错误 注意 如果 api 花费
  • 如何使用 xamarin 表单提示用户进行地理定位

    我正在 Xamarin Forms 应用程序中开发一个应用程序 需要请求地理位置权限 如果获得许可 它需要从设备获取地理位置数据 然后将地理位置坐标放入 Forecast io URL 我正在使用 James 的 Geolocator 插件

随机推荐