2010-12-08 4 views
3

Ich habe ein TextBlock-Steuerelement, an das ich das aktuelle Systemdatum binden möchte, wie kann ich das mit Code Behind tun?wpf, Wie verbinde ich das aktuelle Datum?

Ziel ist es, in diesem TecBlock das aktuelle Systemdatum und die Uhrzeit anzuzeigen und ich brauche die Steuerung nicht die ganze Zeit aktualisieren, nur einmal.

Ich hoffe, das ist am einfachsten Code.Ich möchte keine DateTime-Eigenschaft erstellen. folgen ist mein Code: es falsch ist, dass es nicht BindSource

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

Vielen Dank für Hilfe

Antwort

2

Sie können nicht binden an eine statische Eigenschaft finden. Sie müssen eine Klasse mit einer Eigenschaft erstellen, die DateTime.Now zurückgibt, und das Ereignis PropertyChanged entweder jeden Tag oder jede Sekunde auslösen. (unter Verwendung eines Timers)

2

Nun technisch könnte man die aktuelle Zeit wie im folgenden Beispiel binden, aber ohne eine ordnungsgemäße Bindung wie SLaks erwähnt werden Sie nicht in der Lage sein, es überhaupt zu aktualisieren.

<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

I don möchte nicht aktualisiert werden.Wie implementiert man den Code in der Datei xaml.cs? – doull

16

Dadurch wird das aktuelle Datum nur einmal angezeigt.

einen Namespace alias erstellen: behind.Create eine Eigenschaft der in der Klasse

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


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

Ich glaube, Sie suchen dies in Code zu tun und Set-Bindung an diese Eigenschaft

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