2010-12-08 13 views
3

J'ai un contrôle TextBlock auquel je voudrais associer la date système actuelle, comment puis-je faire ça avec Code Behind?wpf, Comment lier la date actuelle?

Le but est d'afficher dans ce TecBlock la date et l'heure actuelle du système et je n'ai pas besoin d'actualiser le contrôle tout le temps, une seule fois.

J'espère que c'est le plus simple Code.Je ne veux pas Créer la propriété dateTime. suivi mon code: il est faux qu'il ne peut pas trouver BindSource

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

Merci pour l'aide

Répondre

2

Vous ne pouvez pas lier à une propriété statique.

Vous devez créer une classe dont la propriété renvoie DateTime.Now et déclencher l'événement PropertyChanged tous les jours ou toutes les secondes. (en utilisant une minuterie)

2

Eh bien, techniquement parlant, vous pouvez lier l'heure actuelle comme dans l'exemple ci-dessous, mais sans une liaison correcte comme SLaks mentionné, vous ne pourrez pas le rafraîchir du tout.

<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

Je don ne pas vouloir actualiser.Comment implémenter votre code dans le fichier xaml.cs. – doull

16

Ceci affichera la date actuelle une seule fois.

créer un alias d'espace de noms:

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


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

Je pense que vous cherchez à faire dans le code behind.Create une propriété de la dans votre catégoriels et se liant à cette propriété

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