我有一个TextBlock控件,我想绑定当前的系统日期,我怎么能通过Code Behind做到这一点?
目标是在此TecBlock中显示当前的系统日期和时间,我不需要一直刷新控件,只需要刷新一次。
我希望这是最简单的Code.I不想创建dateTime属性。 以下是我的代码:错误的是找不到BindSource
Binding bd = new Binding("System.DateTime.Now");
bd.Source = this;
textBox.SetBinding(TextBox.TextProperty, bd);
感谢您的帮助
答案 0 :(得分:20)
这将仅显示当前日期一次。
创建名称空间别名:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
<TextBlock Text="{Binding Source={x:Static sys:DateTime.Today},
StringFormat='{}{0:dddd, MMMM dd, yyyy}'}"/>
答案 1 :(得分:2)
您无法绑定到静态属性。
您需要创建一个具有返回DateTime.Now
的属性的类,并每天或每秒引发PropertyChanged
事件。 (使用计时器)
答案 2 :(得分: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>
答案 3 :(得分:1)
我认为您希望在代码后面执行此操作。在您的类中创建一个属性并设置对该属性的绑定
public DateTime Date { get; set; }
public Window9()
{
InitializeComponent();
Date = DateTime.Now;
DataContext=this;
txt.SetBinding(TextBlock.TextProperty, new Binding("Date"));
}