假设我的StatusBarItem
中有StatusBar
,其唯一目的是显示当前的DateTime
信息。我知道如何从代码隐藏中实现这一目标;但是,我试图找出一种方法,只能从XAML中完成它。
这是我使用的XAML代码:
<StatusBarItem Content="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='dd/MM/yyyy hh:mm tt'}"/>
它会显示我运行程序时的DateTime
信息,但我无法找到一种纯粹通过XAML更新它的方法,如果可能的话。
答案 0 :(得分:4)
你不能只在XAML中嵌入,做这样的事情,
映射MSDN时,资源不支持DateTime。您可以通过实现INotifyPropertyChanged来使用计时器, namespace Sample.WpfExample
{
public class TickerC : INotifyPropertyChanged
{
public TickerC()
{
Timer timer = new Timer();
timer.Interval = 1000; // 1 second updates
timer.Elapsed += timer_Elapsed;
timer.Start();
}
public DateTime Now
{
get { return DateTime.Now; }
}
void timer_Elapsed(object sender, ElapsedEventArgs e)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Now"));
}
public event PropertyChangedEventHandler PropertyChanged;
}
在XAML中
<Window.Resources>
<src:TickerC x:Key="ticker" />
</Window.Resources>
<StatusBarItem Content="{Binding Source={StaticResource ticker}, Path=Now, Mode=OneWay}"/>