首页 > 解决方案 > 将 WPF DatePicker 绑定到字符串属性

问题描述

我想绑定DatePicker到视图模型的字符串属性。麻烦的是设置正确的字符串格式。将日期存储在字符串属性中是特定于问题的。

除字符串格式外,绑定工作正常。我的xml是:

<DatePicker SelectedDate="{Binding Value, StringFormat=dd.MM.yyyy}"/>

我期望 string 15.08.2019,但 string 是8/15/2019 12:00:00 AM

[编辑]这个问题不重复。通过样式更改 DatePicker 的 TextBox 的字符串格式只会影响其自身,而不是绑定。

标签: c#wpfmvvmdata-binding

解决方案


您需要更改 DatePickerTextBox 的模板

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

推荐阅读