问题标签 [wpflocalizationextension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1954 浏览

c# - MarkupExtension:将简单属性转换为 DependencyProperty

我正在使用 WPFLocalizationExtension (在CodePlex上可用)来本地化我的 WPF 应用程序中的字符串。这个简单的 MarkupExtension 在像这样的简单场景中效果很好:

但是一旦我尝试了一些更复杂的事情,我就陷入了困境:

(有资源windowTitle = "MyApp v{0}")。

由于 FormatSegment1 是一个普通的 INotifyPropertyChange 属性,我无法将任何东西绑定到它。如果 FormatSegment1 是一个 DependencyProperty 是可能的,所以我下载了源代码并尝试修补它们。

我修改了

该类BaseLocalizeExtension继承自MarkupExtension

当我构建时,我得到了通常的"GetValue/SetValue does not exist in current context"错误。我试图让BaseLocalizeExtension类继承自,DependencyObject但我得到了大量的错误。

有没有办法在 MarkupExtension 中使用 xaml 可绑定的 DependencyProperty(或可绑定的东西)?

谢谢你的提示

0 投票
1 回答
1309 浏览

c# - 为 WPF 本地化设置文本流向

我正在使用WPF LocalizationExtension并且可以让它工作。但是,即使它说它内置了对 FlowDirection(从右到左)的支持,我也无法让它工作,并且文档还不够。

FrameworkElement.FlowDirection="{lex:LocText Key=FlowDirection, Dict=Strings, Assembly=LocalizationManager}我在我的<Window ...>定义中添加了这一行。但它会引发类似的错误You cannot use "" for Flow Direction。但是,如果我对文本块使用相同的标记,我可以成功地使文本正常工作LeftToRightRightToLeft.

我认为这是一个类型转换问题,但不知道如何解决。谢谢。

0 投票
0 回答
81 浏览

caliburn.micro - 在 Caliburn 中初始化 Binded int 属性值不会将其映射到 mahApps SplitButton SelectedIndex 属性

我正在初始化这样的值:(MahApps.Metro 1.1.3-ALPHA)

问题是当视图启动时我没有看到 dropDown mahApps 控件中设置的值......,这是怎么回事?

0 投票
1 回答
777 浏览

c# - WPF本地化问题

出于测试目的,我正在尝试本地化一个虚拟应用程序,以便查看最符合我们需求的应用程序。

我想尝试WPF Localization Extension

所以我 :

  1. 创建了一个全新的 WPF 应用程序,创建了一个主窗口。

  2. 通过 nugget 添加了对 WPF 本地化扩展的引用。

  3. 创建了一个名为 resxLocalization.resx和一个Localization.fr.resx

  4. 我在两个 resx 中添加了“WelcomeText”键的文本。

  5. 在主窗口中,我输入:

    在 Window 声明中

  6. TextBlock在网格中添加了一个: <TextBlock Text="{lex:Loc WelcomeText}" />

如果我运行该应用程序,我会以英文显示文本。

现在我在 App.cs 构造函数中添加以下内容:

在 FR 中测试应用程序。我重建并重新启动,但我仍然收到英文消息。

所以首先:我做错了什么?然后:我应该如何在运行时改变当前的文化?

0 投票
1 回答
331 浏览

c# - 使用 WPF 本地化扩展防止魔术字符串

我正在开发一个 WPF 应用程序,用户可以在运行时更改语言。在 C# 代码(ViewModels 等)中,我使用对资源的引用。例如:

这支持 Intellisense 和编译时错误。在 XAML 代码中,我使用 WPF 本地化扩展:

现在的问题是,在 XAML 代码中我使用的是“魔术字符串”,因此如果资源名称更改或移动到另一个资源,则不会出现任何编译时间错误。没有智能感知成员列表的开发工作也会增加。

是否可以在不使用 WPF Loc Extension 的优势的情况下将资源与 C# 代码中的静态引用一起使用?

0 投票
1 回答
2322 浏览

wpf - 在 XAML 中使用占位符进行 WPF 本地化扩展

我在我的程序中使用 WPF 本地化扩展。为了减少类似资源的数量(例如“以米为单位的长度”、“以公里为单位的长度”等),我想使用占位符并将它们设置在 XAML 代码中。

我想过这样的事情

资源“UI_Length”的值

在 CodeBehind 中,使用 String.Format 非常容易

但是如何在 XAML 中添加另一个字符串甚至另一个资源条目?

根据WPF 中资源文件的绑定占位符,这似乎是可能的,但我无法让它为标签运行

[更新]

我设法添加了两个资源值。诀窍是在 Label.Content 中添加一个 TextBlock。见链接

但是我这里还是有问题。在启动时这工作正常但是当我尝试切换语言时

我收到“绑定使用后无法更改”。错误。是否有类似的方法可以使用多个资源值并且仍然能够在运行时切换语言?

[更新 2]

我尝试了 Liero 的建议,但这里仍然存在问题。

在我的 MainView 中,我将 DataContext 设置为 MainViewModel。VM 有一个 LocalizedTexts 实例。在 ViewModel 中更改语言后,我调用 RaisePropertiesChanged() 但没有得到任何输出。

TextBlock 绑定到 LengthInMeters

我在更改语言后调用 RaisePorpertyChanged:

LengthInMeters 看起来像这样:

但是 TextBlock 保持为空。

0 投票
1 回答
470 浏览

c# - WPFLocalizationExtension 不翻译第一个控件(代码隐藏)

因此尝试使用 wpf 本地化扩展。

我们的按钮/控件都有它们的 ID 存储在后面的代码中,因此我最终创建了一个翻译服务来翻译后面的代码。所以它只是绑定完成的翻译。

我们还将我们的翻译存储在一个单独的项目中,因为外部组处理翻译。因此,我的翻译方法设置如下。

然而,当我的页面被加载时,它似乎没有翻译页面上的第一个按钮。第一个按钮返回为 Buttun_BtnTxt 而不是翻译后的值。我试过交换列表中第一个按钮,它总是第一个失败的按钮。

如果我加入一些重试功能,它仍然会失败。(把上面的代码放到while循环里,检查uistring == null,重试50000次)

如果我离开第一页,所有其他页面都可以正常加载,如果我导航回它,翻译也会正常。只是我一生都无法弄清楚为什么它不是第一次翻译。

过去有没有人不得不做这样的事情并遇到同样的问题?


又看了看。添加了代码来检查加载的程序集。在第一次运行时(失败的地方),这是唯一存在的资源实例。

第一次尝试失败后,我再次检查了程序集,现在也出现了以下条目。

不知道为什么这些会延迟加载,或者这是否是导致问题的原因。但这是我现在唯一能想到的。

0 投票
0 回答
131 浏览

c# - 在代码中创建 Loc 绑定

如何像{lex:LocTextUpper XXX}在代码中一样创建本地化绑定?我有一些控件,出于性能原因,我需要在代码中而不是在 XAML 中创建,但我不希望在 UI 文化更改时失去自动字符串替换的舒适性。

0 投票
2 回答
533 浏览

wpf - 带有 ItemTemplate 的 WPFLocalizationExtension

我正在使用WPFLocalizationExtension我的 WPF 应用程序。我有一个ComboBox用于语言选择。项目来源ObservableCollection<KeyValuePair<string, string>>如下:

  • TITLE_LANGUAGE_ENGLISHen
  • TITLE_LANGUAGE_VIETNAMESEvi-VN

这是我的 xaml 代码:

当我运行应用程序时,它会抛出如下异常:

不能在“LocExtension”类型的“键”属性上设置“绑定”。只能在 DependencyObject 的 DependencyProperty 上设置“绑定”

我该如何翻译ItemTemplate

谢谢,

0 投票
1 回答
94 浏览

c# - 如何为标题中的 DataGrid 列使用多语言的本地化扩展

我正在编写一个支持多语言并使用本地化扩展的程序。在标签、按钮或文本框中,一切都正确执行。只有数据网格的标题不能正确执行。使用以下代码

只有钥匙出现在表面上。

问候并感谢您的帮助。