日期字符串格式绑定不起作用

时间:2015-01-06 07:17:07

标签: wpf xaml binding string-formatting

我正在尝试将日期格式设置为“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没有建成。你能帮帮我吧吗?

2 个答案:

答案 0 :(得分:4)

尝试

"{Binding BillDate, StringFormat=d}"

应该以月/日/年为输出。

更新

控件Label的{​​{1}}属性属于object类型,并不像字符串那样应用格式。以下是您的选择,

使用标签上的ContentStringFormat属性:

Content

或者<Label ContentStringFormat="d"> <system:DateTime>2015/3/4 13:6:55</system:DateTime> </Label> 控件,TextBox属性是一个字符串,它需要格式化参数。

答案 1 :(得分:3)

您的媒体资源类型应为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}"/>