Связывание с DateTime.Now. Обновить значение

Ну, мне нужно привязать DateTime.Now к TextBlock, я использовал это:

 Text="{Binding Source={x:Static System:DateTime.Now},StringFormat='HH:mm:ss tt'}"

Теперь, как заставить его обновляться? Он получает время загрузки элемента управления и не обновляет его...

Ответ 1

Отредактировано (я не учитывал его, желая автообновить):

Здесь ссылка класса 'Ticker', который использует INotifyPropertyChanged, чтобы он автоматически обновлялся. Здесь код с сайта:

namespace TheJoyOfCode.WpfExample
{
    public class Ticker : INotifyPropertyChanged
    {
        public Ticker()
        {
            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;
    }
}


<Page.Resources>
   <src:Ticker x:Key="ticker" />
</Page.Resources>

<TextBox Text="{Binding Source={StaticResource ticker}, Path=Now, Mode=OneWay}"/>

Declare:

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

Теперь это будет работать:

<TextBox Text="{Binding Source={StaticResource ticker}, Path=Now, Mode=OneWay}"/>

Ответ 2

Для Windows Phone вы можете использовать этот фрагмент

public Timer()
{
    DispatcherTimer timer = new DispatcherTimer();
    timer.Interval = TimeSpan.FromSeconds(1); // 1 second updates
    timer.Tick += timer_Tick;
    timer.Start();
}

public DateTime Now
{
    get { return DateTime.Now; }
}

void timer_Tick(object sender, EventArgs e)
{
    if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs("Now"));
}

public event PropertyChangedEventHandler PropertyChanged;

Я адаптировал код m-y. Надеюсь, что это тоже может быть полезно.

Ответ 3

Вам нужно сделать таймер, который обновляет текстовое поле каждую секунду.