【问题标题】:How to localize DatePicker and TimePicker in WP8如何在 WP8 中本地化 DatePicker 和 TimePicker
【发布时间】:2012-07-19 20:47:38
【问题描述】:

我正在尝试本地化与 WP7 上的工具包关联的 DatePicker 和 TimePicker,但我不确定如何访问 Header 和应用程序栏文本。我找不到任何显示完成这些任务的方法的链接。是否有任何有用的链接或有人知道如何完成这些链接?

【问题讨论】:

    标签: c# windows-phone-7 xaml datepicker timepicker


    【解决方案1】:
    1. 下载工具包最新版本(2011 年 11 月)的源代码和示例的最简单方法,默认本地化为 DatePickerTimePicker
    2. 将它作为项目引用添加到您的解决方案中。

    如果您拥有 2011 年 11 月之前的 Toolkit 版本,

    1. 再次将其添加为解决方案中的项目参考
    2. 在项目方面,您的解决方案中已包含它。添加必要的 resx 文件。您可以看到有一个默认的 Resources.resx 文件,其中包含日期选择器的英文文本。为其他语言添加必要的 resx 文件。

    【讨论】:

    • 我确实下载了带有源代码的 11 月版本并将其添加为我的项目的参考,但我的 DatePicker 和 TimePicker 页面标题和应用栏图标没有相应地翻译?此外,我尝试将 ControlResources resx 文件直接添加到我的解决方案中,然后构建解决方案,但标题和应用栏图标再次无法正确翻译。我做错了什么?
    • 应用栏图标不会被翻译。但其他人会。您是否在受支持的文化中包含了必要的语言?在 LocalizedResources 中,您会找到必要的 resx 对吗?您要本地化到哪种语言?
    • 我相信我做的一切都是正确的,我正在翻译成 WP7 上所有支持的语言。我按照本教程 msdn.microsoft.com/en-us/library/ff637520(v=vs.92) 进行操作,当我更改显示语言时,所有字符串都可以正确翻译,但 DatePicker 和 TimePicker 字符串除外。
    【解决方案2】:

    很简单:参数-语言。 Xaml 代码:

    <toolkit:DatePicker Language="ru-RU" Margin="-12, 0" Value="{Binding BirthDate, Mode=TwoWay}" />
    

    【讨论】:

    • 谢谢,我会调查的。我现在更新了我的问题的名称以包含 WP8,它可能会有所不同我还没有机会使用 DatePicker。
    【解决方案3】:

    另一种不修改 XAML 源的替代方法是在页面加载后修改“HeaderTitle”TextBlock。

        /// <summary>
        /// Called from app.xaml.cs if the user navigates to the DatePickerPage
        /// </summary>
        /// <param name="page">The page.</param>
        public static void DatePickerHook(PhoneApplicationPage page)
        {
            // Somehow modify the text on the top of the page...
            LoopThroughControls(page, (ui => {
                var tb = ui as TextBlock;
                if (tb != null && tb.Name == "HeaderTitle")
                {
                    tb.Text = "<<Local Translation>>";
                }
            }));
        }
    
        /// <summary>
        /// Applies an action to every element on a page
        /// </summary>
        /// <param name="parent">The parent.</param>
        /// <param name="modifier">The modifier.</param>
        private static void LoopThroughControls(UIElement parent, Action<UIElement> modifier)
        {
            int count = VisualTreeHelper.GetChildrenCount(parent);
            if (count > 0)
            {
                for (int i = 0; i < count; i++)
                {
                    UIElement child = (UIElement)VisualTreeHelper.GetChild(parent, i);
                    modifier(child);
                    LoopThroughControls(child, modifier);
                }
            }
            return;
        }
    

    这里是描述 app.xaml.cs 修改的博客文章的链接:http://blog.dotnetframework.org/2015/11/09/localise-datepicker-in-wp8-silverlighttoolkit-using-hooks/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多