【问题标题】:WPF DatePicker Custom FormatWPF DatePicker 自定义格式
【发布时间】:2022-01-18 03:58:14
【问题描述】:

如前所述,我希望将日期选择器日期自定义为 YYYY-MM-DD 我的 XAML 文件中有:

<DatePicker x:Name="DatePicker_Date"  Width="300px" VerticalAlignment="Center" HorizontalAlignment="Center" >
                    <DatePicker.Resources>
                        <Style TargetType="{x:Type DatePickerTextBox}">
                            <Setter Property="Control.Template">
                                <Setter.Value>
                                    <ControlTemplate>
                                        <TextBox x:Name="PART_TextBox"
                                 Text="{Binding Path=SelectedDate, 
                                        RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}, 
                                        StringFormat={x:Static local:App.DateFormat}}" />
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </DatePicker.Resources>
                </DatePicker>

然后在我的 App.xaml.cs 文件中:

 public partial class App : Application
{
    public static string DateFormat = "yyyy-MM-dd";
}

所以这可以在选择器本身中以正确的方式显示日期,但是当我去引用那个日期时:

string dateTemp = DatePicker_Date.Text;

它只是打印出原始日期格式 MM-DD-YYYY

我在这里缺少什么——我不能使用不起作用的 PART_Textbox.text。如何将新格式化的文本转换为字符串?

我在堆栈溢出方面遵循了其中一些解决方案,但它们似乎具有相同的结果,我最喜欢的一个设置在 app.xaml 资源中,因此我不必每次都为我的每个日期选择器都这样做申请,但我有同样的问题:

 <Style TargetType="{x:Type DatePickerTextBox}">
 <Setter Property="VerticalContentAlignment" Value="Center"/>
 <Setter Property="Control.Template">
     <Setter.Value>
         <ControlTemplate>
             <TextBox x:Name="PART_TextBox"
        Text="{Binding Path=SelectedDate, StringFormat='dd.MM.yyyy', 
        RelativeSource={RelativeSource AncestorType={x:Type DatePicker}}}" />
         </ControlTemplate>
     </Setter.Value>
 </Setter>

对 WPF 比较陌生,为我的无知道歉。

【问题讨论】:

  • 参见Remarks:"虽然 Text 属性可以设置为 Parse 方法可以解析的任何字符串日期,但返回的字符串格式取决于值的 CultureInfo.CurrentCulture 属性。这意味着 DatePicker 可能会显示与用户键入的字符串不同的字符串。" - 您必须自己格式化 SelectedDate 属性。

标签: c# wpf forms datepicker


【解决方案1】:

您应该使用SelectedDate 属性将当前选择的日期作为DateTime 获取,然后根据您的特定格式对其进行格式化:

string dateTemp = DatePicker_Date.SelectedDate?.ToString(App.DateFormat);

【讨论】:

  • 谢谢!这对我有用!
猜你喜欢
  • 1970-01-01
  • 2017-02-06
  • 2021-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-05
  • 1970-01-01
相关资源
最近更新 更多