将WPF DatePicker绑定到字符串属性[重复]

Posted

技术标签:

【中文标题】将WPF DatePicker绑定到字符串属性[重复]【英文标题】:binding WPF DatePicker to string property [duplicate] 【发布时间】:2019-12-15 22:12:01 【问题描述】:

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

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

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

我期望字符串15.08.2019,但字符串是8/15/2019 12:00:00 AM

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

【问题讨论】:

见***.com/questions/3819832/… 通过样式改变 DatePicker 的 TextBox 的字符串格式只影响它自己,不影响绑定。 更改 ViewModel 以使其输出 ´´´DateTime´´´ 属性可能是一个更好的主意。您可以通过 ´´´DateTime.Parse´´´ 解析已有的字符串 不可能。一行是带有自定义对象的ExpandoObject,具体取决于“列”的类型(EnumDataTemplateSelector 为单元格返回适当的编辑器...所有数据都存储在string 中。 【参考方案1】:

您需要更改 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>

【讨论】:

此 xaml 在 DatePiker 的编辑器中更改字符串格式,但不适用于 viewmodel 的属性。我已经尝试过这个解决方案,但它对我不起作用。

以上是关于将WPF DatePicker绑定到字符串属性[重复]的主要内容,如果未能解决你的问题,请参考以下文章

DatePicker 数据绑定将默认值设置为 1/1/0001 WPF c#

WPF DatePicker,显示今天的日期并绑定到属性

WPF datapicker控件绑定到数据库的日期属性,不能同步更改!

WPF 将 ListBox 绑定到枚举,显示描述属性

WPF + DatePicker + UpdateSourceTrigger = 显式

Caliburn.Micro 将 DateTimeOffset 绑定到 DatePicker