Setting a timer in the GUI is only appropriate if you don't control that data - for example if you have to query a database table to see if someone else has changed it. You're updating your view of the data every minute.
If you control that data, the data should change and WPF should be able to notice when it changes. Usually this just means converting List<Meeting>
to `Observable'.
You could either have a single timer that fires every minute, and check every meeting each time (or sort them and just check the first one)
Or you could create a timer for each Meeting, which is calculated to fire at the right time.
Or, if you've sorted the list, you could just set a single timer to fire when the first meeting occurs, and then work out what is next (and recalculate this if anything changes)
The first is probably most robust, but least efficient, while the last is the opposite.