如何更新DateTime.Now绑定纯粹在XAML中?

时间:2014-04-04 04:55:16

标签: c# wpf xaml datetime

假设我的StatusBarItem中有StatusBar,其唯一目的是显示当前的DateTime信息。我知道如何从代码隐藏中实现这一目标;但是,我试图找出一种方法,只能从XAML中完成它。

这是我使用的XAML代码:

<StatusBarItem Content="{Binding Source={x:Static sys:DateTime.Now}, StringFormat='dd/MM/yyyy hh:mm tt'}"/>

它会显示我运行程序时的DateTime信息,但我无法找到一种纯粹通过XAML更新它的方法,如果可能的话。

1 个答案:

答案 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}"/>