Wpf 日期时间输入格式?

Wpf 日期时间输入格式?,wpf,datetime,string-formatting,Wpf,Datetime,String Formatting,有些事我想不通。只是希望有人能帮忙 我有一个绑定到DateTime属性的WPF文本框,如下所示 <TextBox Text="{Binding DOB, StringFormat='{}{0:dd/MM/yyyy}'}" /> 如果我输入文本“01/30/2013”,它将正确转换并显示为“30/01/2013”。 如果我输入文本“30/01/2013”,它会抛出一个验证错误,因为它希望输入的格式为MM/dd/YYYY 如何更改输入格式? 我意识到我可以编写自定义转换器。我只是想

有些事我想不通。只是希望有人能帮忙

我有一个绑定到DateTime属性的WPF文本框,如下所示

<TextBox Text="{Binding DOB, StringFormat='{}{0:dd/MM/yyyy}'}" />

如果我输入文本“01/30/2013”,它将正确转换并显示为“30/01/2013”。 如果我输入文本“30/01/2013”,它会抛出一个验证错误,因为它希望输入的格式为MM/dd/YYYY

如何更改输入格式? 我意识到我可以编写自定义转换器。我只是想知道还有没有别的办法


感谢您在调试模式下运行它,我得到以下转换失败:

ConvertBack无法转换值“30/01/2013”(类型“字符串”)。 BindingExpression:Path=Date;DataItem='MainWindowViewModel' (HashCode=19342748);目标元素是“TextBox”(名称=“”);目标 属性为“Text”(类型为“String”) FormatException:'System.FormatException:字符串未被识别为 有效的日期时间

它似乎使用了一个默认的转换器,它使用了类似于
DateTime.Parse
的东西

以下操作失败,但出现相同的异常:

var date = DateTime.Parse("30/01/2013");

看起来您唯一的选择就是编写自己的转换器。

试试这个技巧。在
App.xaml
文件中添加
Startup
事件句柄:

<Application x:Class="YourClass.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         Startup="Application_Startup" ... />

现在,日期应根据当前区域性显示,因此当您以其区域性的格式输入日期时,不应出现验证错误。

抱歉,此操作无效。相同错误(注意:我假设是相同的错误,因为我没有显示验证错误。文本框的边框是红色的)如果处于调试模式,您应该能够在输出窗口中查看转换失败。如果有帮助的话。
public partial class App : Application
{
    private void Application_Startup(object sender, StartupEventArgs e)
    {
        FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement),
            new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag)));
    }
}