【问题标题】:date string format binding not working日期字符串格式绑定不起作用
【发布时间】:2015-01-06 07:17:06
【问题描述】:

我正在尝试将日期格式设置为“MM/dd/yyyy”,但是,当前日期格式也随着时间而来,我尝试使用以下代码对其进行格式化,但是它没有改变,请您帮忙纠正我如下:

<DataGridTextColumn Header="Bill Date" Binding="{Binding BillDate, StringFormat={}{0:MM/dd/yyyy}}" Width="90" IsReadOnly="True" />

和

        <DataGridTemplateColumn Header="Bill Date" Width="90">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Label Content="{Binding BillDate}" ContentStringFormat="MM/dd/yyyy" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

我的属性代码如下:

Property BillDate As Date
    Get
        Return _BillDate
    End Get
    Set(Value As Date)
        If Not _BillDate = Value Then
            _BillDate = Value
            NotifyPropertyChanged("BillDate")
        End If
    End Set
End Property

我不想在属性级别更正,我只想在 XAML 中显示格式,尽管据我所知,上述格式不起作用。

编辑: 经过多次尝试和少量经验,我开始知道解决方案不是构建任何新代码。所以,现在的问题是 - 没有构建新的、修改过的 xaml。你能帮我解决这个问题吗?

【问题讨论】:

  • 您的更新令人困惑,是什么失败了?是将日期转换为 mm/dd/yyyy 还是解析失败?听起来您为不可用的项目添加了属性。那么,它在哪里失败了?
  • 我认为他的意思是 DevStudio 在修改 XAML 时并未构建它。 @surpavan:您确定要编辑正确的 XAML 文件吗?你在玩的时候有没有在某个地方复制过?
  • 我正在关闭问题,我知道问题,.dll文件被锁定,运行后VS测试服务没有关闭。我重新启动了电脑,现在可以正常工作了。

标签: wpf xaml binding string-formatting


【解决方案1】:

试试

"{Binding BillDate, StringFormat=d}"

这应该给你月/日/年作为输出。

更新

控件Label 的Content 属性属于对象类型,并且不像字符串那样应用格式。这是您的选择,

使用标签上的ContentStringFormat 属性:

<Label ContentStringFormat="d">
    <system:DateTime>2015/3/4 13:6:55</system:DateTime>
</Label>

或者TextBox 控件,Text 属性是一个字符串,它接受格式化参数。

【讨论】:

  • @surpavan 我更新了我的帖子。为标签创建转换器或更改为使用TextBox 控件。看看上面的原因。
  • 谢谢。无需创建转换器类,而是轻松创建只读属性以以字符串格式返回。我使用的控件是datagridtextcolumn,所以字符串格式应该可以工作。
【解决方案2】:

你的属性类型应该是DateTime,而不是Date:

Property BillDate As DateTime
    ...
End Property

然后这个工作:

<Label Content="{Binding BillDate}" ContentStringFormat="MM/dd/yyyy"/>

但你可能会更好地使用 TextBlock 而不是 Label:

<TextBlock Text="{Binding BillDate, StringFormat=MM/dd/yyyy}"/>

【讨论】:

  • 现在试了一下,还是一样的结果,还是随着时间的推移,不知道为什么:(.
猜你喜欢
  • 1970-01-01
  • 2023-03-07
  • 1970-01-01
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-12-07
  • 2017-10-08
  • 1970-01-01
相关资源
最近更新 更多