【问题标题】:binding WPF DatePicker to string property [duplicate]将WPF DatePicker绑定到字符串属性[重复]
【发布时间】: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 的字符串格式只会影响自身,不会影响绑定。

【问题讨论】:

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

标签: c# wpf mvvm data-binding


【解决方案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 的属性。我已经尝试过这个解决方案,但它对我不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 2012-01-29
  • 2021-11-13
  • 2011-10-20
  • 2010-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多