我编写的用户控件与“en-US”以外的文化不兼容。此外,将此用户控件嵌入到具有非“en-US”文化的应用程序中也是不可避免的。那么是否可以强制应用程序不要更改此用户控件的文化?
最好在用户控制器内部有一个解决方案。
我读过这个帖子:
Localizing a WinForms Application with Embedded WPF User Controls
但我不能使用 WpfLocalization.LocalizationScope.SetCulture
这个功能真的存在吗?
还有一个可本地化标记,可以设置为 False ,但它仅用于 .csproj 文件中的资源定义: http://msdn.microsoft.com/en-us/library/ms788718.aspx
那么有没有人对这个问题有任何想法?
<小时/> 更多澄清:
<my:uc1 x:Name="UserControl1" Date="4234/12/22" />
当应用程序文化为“en-US”时,用户控制权将获得“4234/12/22”,但当应用程序文化为其他内容时,它会转换“4234/12/22 “自动进入应用程序自己的日历,并向用户控件提供”0744/04/08“,并破坏用户控件背后的每一个逻辑!这完全是一场灾难。
我想通过将用户控件的文化专门设置为“en-US”来阻止此转换。
希望我已经充分澄清了这一情况。
答案 0 :(得分:4)
您可以设置控件的FrameworkElement.Language
属性,或将xml:lang
属性应用于控件的XAML。您必须设置的值为en-US
。
使用此属性/属性设置的区域性会影响控件中特定于区域性的字符串的转换方式。例如。如果您使用DateTime
(长日期)格式显示D
,那么Monday, 30 April 2012
时xml:lang="en-US"
和30. april 2012
xml:lang="da-DK"
时会显示<my:uc1 x:Name="UserControl1" Date="4/30/2012" />
。 / p>
但是,如果您在XAML中指定日期,例如
CultureInfo.InvariantCulture
使用en-US
(基本上30/4/2012
)解析该日期。这不是你似乎描述的行为。您在描述真实问题时有点模糊,但为了验证我的声明,您可以尝试输入en-US
日期并查看它无法编译。它不仅在Visual Studio的当前文化为da-DK
时,而且在我的案例d/M/yyyy
(日期格式为{{1}})中也是如此。