设置单个 WPF 用户控件的文化

Spo*_*ade 4 wpf culture user-controls

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

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

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


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

<my:uc1 x:Name="UserControl1" Date="4234/12/22" />
Run Code Online (Sandbox Code Playgroud)

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

我想通过将用户控件的区域性设置为“en-US”来防止这种转换。

希望我已经充分说明了情况。

Mar*_*age 5

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

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

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

<my:uc1 x:Name="UserControl1" Date="4/30/2012" />
Run Code Online (Sandbox Code Playgroud)

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