Это основано на предоставленных комментариях, а не только на вопросе выше.
В основном проблема заключается в том, что вы создаете обновление второго экземпляра вашей ViewModel (называемого YearScreen в вашем коде) и обновляете его.
YearScreen уже создается и привязывается к вашему Xaml включением:
<UserControl.Resources>
<prop:YearScreen x:Key="YearScreenProps"/>
</UserControl.Resource>
Затем вы создаете второй ViewScreen в другом месте кода (через новый ViewScreen ()) и обновляете его, однако нет никакой связи между двумя экземплярами ViewScreen, поэтому на странице Xaml ничего не будет обновляться.
Одно из возможных (быстрых) решений:
Создайте свой YearScreen как синглтон. То есть добавить статический метод доступа типа YearScreen в класс и установить его из конструктора.
public class YearScreen : INotifyPropertyChanged
{
private static YearScreen _This;
public static YearScreen This { get { return _This; } }
[snip]
public YearScreen()
{
_This = this;
}
Вы можете получить доступ к «единственному» экземпляру вашего YearScreen из другого места, используя статический одноэлементный метод доступа, например ::
.
YearScreen.This.YearProperty = DateTime.Now.ToString():
Существуют лучшие шаблоны для обмена ViewModel, чем синглтонами, но это поможет вам.
Шаблон, с которого вы начали - это ViewFirst создание (представление создает ViewModel). ModelFirst делает наоборот, но плохо, потому что модель знает, как она отображается. Использование объекта контроллера для создания View и ViewModel и их соединения является лучшей альтернативой, но тогда это становится довольно сложным. Использование внедрения объектов одного экземпляра является лучшим вариантом, но включает в себя целый набор новых концепций. Поиск Silverlight Prism после решения ваших текущих проблем.