如何在WP8中本地化DatePicker和TimePicker

时间:2012-07-19 20:47:39

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

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

3 个答案:

答案 0 :(得分:2)

  1. 下载最新版工具包(2011年11月)的源代码和示例的最简单方法,该工具包默认为DatePickerTimePicker的本地化。
  2. 将其作为项目参考添加到您的解决方案中。
  3. 如果您拥有2011年11月之前的Toolkit版本,

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

另一种不修改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/