The problem is here:
_currentTime = string.Format("{0}:{1}:{2}", d.Hour.ToString("00"), d.Minute.ToString("00"), d.Second.ToString("00"));
You're setting the backing value of the property directly, rather than setting the property itself. You need to change this to:
currentTime = string.Format("{0}:{1}:{2}", d.Hour.ToString("00"), d.Minute.ToString("00"), d.Second.ToString("00"));
When you call the setter on the property, that's going to both update the
_currentTime
field but more importantly it's going to raise the
PropertyChanged
event. It's this event that's necessary for a WPF binding to know that the value has changed.