WPF DatePicker Watermark使用错误的语言,但Dateformat是正确的

M C*_*M C 6 c# wpf datepicker internationalization

我有一个非常奇怪的问题:

在我的机器上,DatePicker根据我想要设置的语言/文化更改其水印和日期格式.

如果我将我的应用程序复制到其他计算机后发生:

在某些计算机上,它的工作方式与我的机器相同.在其他计算机上只有日期格式更改,但水印没有!毋庸置疑,拥有一个日期选择器,例如德国日期,但英国水印是非常难看的.

这种行为的原因是什么?

对于i18n,我使用以下代码:

App.xaml.cs:

public partial class App : Application
{
    public App()
    {
        CultureInfo ci = new CultureInfo("de-DE"); 
        Thread.CurrentThread.CurrentCulture = ci;
        Thread.CurrentThread.CurrentUICulture = ci;
    }
}
Run Code Online (Sandbox Code Playgroud)

WindowMain.xaml.cs:

public partial class WindowMain : RibbonWindow
{
    public WindowMain()
    {
        this.Language = XmlLanguage.GetLanguage("de-DE");
        this.InitializeComponent();
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 6

设置带水印的文本实际上非常容易:

<DatePicker>
  <DatePicker.Resources>
    <Style TargetType="DatePickerTextBox">
      <Setter Property="Text" Value="Watermark Text"/>
    </Style>
  </DatePicker.Resources>
</DatePicker>
Run Code Online (Sandbox Code Playgroud)

http://www.admindiaries.com/change-datepicker-watermark-in-wpf/

  • 这不会更改水印,它实际上会设置文本。使用键盘在控件中输入日期时,会导致不同的行为。 (3认同)

Ana*_*aev 5

有一点我可以说,WatermarkDatePicker实施的车上,没有简单的访问权限.也许,由于这种困难,文本的本地化不起作用.有一篇精彩的文章@Matt Hamilton,引自这里:

很多人(我自己也不喜欢)关于DatePicker的东西,默认情况下,如果没有显示日期,它会显示文本"选择日期"作为水印,并且此文本被烘焙到控件中 - 它没有本地化或任何公共财产可访问.如果相关日期是可选的,并且您不一定要提示用户选择一个日期,则这尤其令人沮丧.

在同一篇文章中,他提供了如何访问的决定Watermark.这里:

如何本地化WPF 4.0 DatePicker控件

@Wayne Maurer附加依赖属性的形式创建了一个通用解决方案:

<DatePicker Grid.Row="2" 
            local:DatePickerWatermarkBehaviour.Watermark="Select the date" />
Run Code Online (Sandbox Code Playgroud)

您需要基于当前文化,设置水印文本,例如使用上面的示例.

Note:在Silverlight WatermarkDatePicker进行访问[ link]:

DatePickerTextBox box = base.GetTemplateChild("TextBox") as DatePickerTextBox;
box.Watermark = "Type or select a date --> "; 
Run Code Online (Sandbox Code Playgroud)