小编boc*_*cko的帖子

Xamarin.Forms 在运行时更改 UI 语言 (XAML)

我正在使用Strings.resxStrings.de.resx等来本地化Xamarin.Forms应用程序。我需要能够在运行时更改界面语言,并且它(几乎)可以正常工作。

Xamarin产生static class Stringsnamespace MyProject.Resources从资源文件和我使用这些值显示在UI字符串。从代码中执行此操作时,它可以完美运行:

await DisplayAlert(Strings.lblConfirmDelete, Strings.lblDeleteMessage, Strings.lblOK, Strings.lblCancel));
Run Code Online (Sandbox Code Playgroud)

问题是 - 当我在运行时更改 UI 文化时,并非所有从 XAML 以这种方式定义的属性都会更新。按钮、标签、条目属性(占位符等)会按原样更改,但 PageTitle、Toolbaritems 和一些其他属性仍保留以前的语言。

我认为其中一些是在首次创建 Page 时填充的,并且不会随着文化(和 UI 文化)的变化而更新。所以,基本上,我需要一种方法来结合{DynamicResource ...}资源的价值。我知道这DynamicResource可以与 Resource 字典一起使用,但这不是存储用于本地化的语言翻译的好方法。

我试过

Text="{DynamicResource {x:Static lr:Strings.lblAddNew}}"
Run Code Online (Sandbox Code Playgroud)

也不工作。

有没有办法动态刷新页面?

我也试过打电话

global::Xamarin.Forms.Xaml.Extensions.LoadFromXaml(this, typeof(MainListPage));
Run Code Online (Sandbox Code Playgroud)

来自该页面的出现事件,但这也不起作用。

有任何想法吗?

XAML 文件的一部分

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:MyProject.View"
    xmlns:rs="clr-namespace:MMPI"
    x:Class="MyProject.MainListPage"
    xmlns:lr="clr-namespace:MyProject.Resources"

    Title="{x:Static lr:Strings.appName}"
    >

<ContentPage.ToolbarItems>
    <ToolbarItem 
     Name="New" 
     Order="Primary" 
     Priority="0"
     Text="{x:Static lr:Strings.lblAddNew}" 
     Clicked="New_Clicked"
>
Run Code Online (Sandbox Code Playgroud)

xaml localization xamarin.forms

6
推荐指数
1
解决办法
9512
查看次数

使用canvas2svg.js将chart.js图表​​导出到svg

我正在尝试使用canvas2svg.jschart.js图表导出到svg 。

它似乎不起作用,因为chart.js拒绝使用canvas2svg.js创建的“伪”画布

我的HTML代码:

<div style="position: relative; height:20vh; width:100vh">
<canvas id="radarCanvas" ></canvas>
</div>
Run Code Online (Sandbox Code Playgroud)

我的剧本:

var ctx = document.getElementById("radarCanvas").getContext("2d");

var radarChart = new Chart(ctx, graphData);  // Works fine


// Create canvas2svg 'fake' context
var c2s = C2S(500,500);

// new chart on 'fake' context fails:
var mySvg = new Chart(c2s, graphData);
// Result (console):
// "Failed to create chart: can't acquire context from the given item"
Run Code Online (Sandbox Code Playgroud)

我已经在Codepen上发布了完整的示例(很抱歉,在那里的长篇js,我找不到从其中导入canvas2svg的链接,因此我将其粘贴在脚本的开头。)

javascript svg chart.js

3
推荐指数
2
解决办法
4371
查看次数

标签 统计

chart.js ×1

javascript ×1

localization ×1

svg ×1

xamarin.forms ×1

xaml ×1