wpf,如何绑定当前日期?

时间:2010-12-08 01:59:15

标签: wpf

我有一个TextBlock控件,我想绑定当前的系统日期,我怎么能通过Code Behind做到这一点?

目标是在此TecBlock中显示当前的系统日期和时间,我不需要一直刷新控件,只需要刷新一次。

我希望这是最简单的Code.I不想创建dateTime属性。 以下是我的代码:错误的是找不到BindSource

  Binding bd = new Binding("System.DateTime.Now");
        bd.Source = this;
        textBox.SetBinding(TextBox.TextProperty, bd);

感谢您的帮助

4 个答案:

答案 0 :(得分:20)

这将仅显示当前日期一次。

创建名称空间别名:

  xmlns:sys="clr-namespace:System;assembly=mscorlib"


<TextBlock Text="{Binding Source={x:Static sys:DateTime.Today},   
       StringFormat='{}{0:dddd, MMMM dd, yyyy}'}"/> 

答案 1 :(得分:2)

您无法绑定到静态属性。

您需要创建一个具有返回DateTime.Now的属性的类,并每天或每秒引发PropertyChanged事件。 (使用计时器)

答案 2 :(得分:2)

从技术上讲,你可以绑定当前时间,如下面的示例所示,但没有正确的绑定,因为SLaks提到你根本无法刷新它。

<Window x:Class="testWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:src="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <ObjectDataProvider x:Key="date" ObjectType="{x:Type src:DateTime}"/>
    </Window.Resources>
    <Grid>
        <TextBox Text="{Binding Source={StaticResource date}, 
                        Path=Now, Mode=OneWay}" />
    </Grid>
</Window>

答案 3 :(得分:1)

我认为您希望在代码后面执行此操作。在您的类中创建一个属性并设置对该属性的绑定

public DateTime Date { get; set; }
    public Window9()
    {
        InitializeComponent();
        Date = DateTime.Now;
        DataContext=this;
        txt.SetBinding(TextBlock.TextProperty, new Binding("Date"));
    }