2010-12-08 2 views
3

У меня есть элемент управления TextBlock, к которому я хотел бы привязать текущую Системную дату, как я могу это сделать с помощью кода Behind?wpf, Как связать текущую дату?

Цель состоит в том, чтобы отображать в этом TecBlock текущую Системную дату и время, и я не нуждаюсь в обновлении управления все время, только один раз.

Я надеюсь, что это самый простой код. Я не хочу создавать свойство DateTime. последующий мой код: это неправильно, что он не может найти 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")); 
    } 
Смежные вопросы