2010-12-08 56 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")); 
    }