4

我编写了一个与“en-US”以外的文化不兼容的用户控件。此外,将这个用户控件嵌入到具有非“en-US”文化的应用程序中也是不可避免的。那么是否可以强制应用程序不更改此用户控件的文化?
最好在用户控件内部有一个解决方案。
我已阅读此线程: Localizing a WinForms Application with Embedded WPF User Controls 但我不能使用WpfLocalization.LocalizationScope.SetCulture
这个功能真的存在吗?

还有一个可以设置为False的Localizable标记,但它仅用于.csproj文件中的资源定义:http: //msdn.microsoft.com/en-us/library/ms788718.aspx

那么有没有人对这个问题有任何想法?


更多说明:
假设我们有一个具有文化 X 的应用程序和一个与文化“en-US”兼容的用户控件。此用户控件具有 DateTime 类型的依赖属性,它通过以下方式获取其值:

<my:uc1 x:Name="UserControl1" Date="4234/12/22" />

当应用程序文化为“en-US”时,用户控件将获得“4234/12/22”,但当应用程序文化为其他内容时,它会自动将“4234/12/22”转换为应用程序自己的日历并提供“0744/04” /08"到用户控制并破坏用户控制背后的每一个逻辑!这完全是一场灾难。

我想通过将用户控件的文化专门设置为“en-US”来防止这种转换。

希望我已经澄清了足够的情况。

4

1 回答 1

5

您可以设置FrameworkElement.Language控件的属性或将xml:lang属性应用于控件的 XAML。您必须设置的值为en-US.

您使用此属性/属性设置的区域性会影响特定区域性字符串在控件中的转换方式。例如,如果您DateTime使用D(长日期)格式显示,您会得到类似Monday, 30 April 2012whenxml:lang="en-US"30. april 2012when的内容xml:lang="da-DK"

但是,如果您在 XAML 中指定日期,例如

<my:uc1 x:Name="UserControl1" Date="4/30/2012" />

该日期使用CultureInfo.InvariantCulture(基本上en-US)解析。这不是您似乎描述的行为。您对实际问题的描述有点含糊,但要验证我的说法,您可以尝试输入30/4/2012日期并查看它无法编译。它不仅适用于 Visual Studio 的当前文化,en-US而且在我的情况下da-DK(日期格式为d/M/yyyy)也是如此。

于 2012-04-30T07:41:15.647 回答