2010-12-08 1109 views
3

我有一个TextBlock控件,我想绑定当前系统日期,我怎么能通过代码隐藏来做到这一点?wpf,如何绑定当前日期?

我们的目标是在这个TecBlock来显示当前系统日期和时间,我不需要控制刷新所有的时间,只有一次。

我希望这是最简单的Code.I不想创建日期时间属性。 遵循的是我的代码:这是错误的,它不能找到BindSource

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

感谢您的帮助

回答

2

您不能绑定到一个静态属性。

您需要创建一个带有属性的类,该属性返回DateTime.Now,并且每天或每秒钟都会提升PropertyChanged事件。 (使用定时器)

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> 
+0

我不不想刷新。如何在xaml.cs文件中实现您的代码。 – doull 2010-12-08 03:16:05

16

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

创建一个命名空间别名:

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


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

我认为你要做到这一点的代码behind.Create的一个属性在您的类和集绑定到该属性

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