Прежде чем перейти к моему вопросу / проблеме, вот базовая структура моего приложения:
В моем файле MainWindow.xaml (в данном случае это основной вид) у меня есть ярлык (я понимаю, что должен измениться)это для TextBlock, но это отдельная проблема):
<Label Name="StatusLabel" Content="{Binding Path=Status}"/>
Это соответствующий ViewModel (MainWindowViewModel) содержит другой ViewModel (SiteListViewModel) и свойство Status:
public class MainWindowViewModel : ViewModelBase
{
public SiteListViewModel SiteList { get; set; }
public String Status
{
get { return SiteList.Status; }
}
}
Как выМожно видеть, что свойство Status MainWindowViewModel возвращает свойство Status экземпляров SiteListViewModel, которое определяется следующим образом:
public class SiteListViewModel : ViewModelBase
{
private string status;
public String Status
{
get { return this.status; }
set
{
this.status = value;
base.OnPropertyChanged("Status");
}
}
}
Свойство Status SiteListViewModel обновляется в различных местах во время асинхронных процессов, чтобы держать пользователя в курсе того, что происходитна.Это делается с помощью простых вызовов присваивания, таких как:
Status = String.Format(Properties.Resources.SiteListViewModel_Status_LoadingJobs, count + 1, totalSites);
Еще одно важное замечание: MainWindowViewModel и SiteListViewModel наследуются от ViewModelBase, который реализует INotifyPropertyChanged.
Теперь для актуального вопроса / проблемы:
Метка не обновляется.
Однако, если я изменю привязку в представлении на это:
<Label Name="StatusLabel" Content="{Binding Path=SiteList.Status}"/>
Работает нормально.Который, кажется, указывает, что я что-то упускаю на уровне MainWindowViewModel.Я мог бы оставить все как есть, но это затрагивает структуру модели дочернего представления, что я не хочу делать.
Может кто-то указать на то, что я делаю неправильно?