MyProduct - это модель, имеющая логическое свойство HasError (с OnPropertyChanged ...), которое может изменяться.MyProductDialogViewModel:
class ProductDialogViewModel : Notifier
{
public ProductDialogViewModel() { }
public MyProduct Product { get; set; }
public bool HasError
{
get { return Product.HasError; }
}
}
Я назначил экземпляр MyProductDialogViewModel для BaseContentControl.DataContext, чтобы наполнить ContentControl.Это представление может быть заполнено различными моделями представления, все из которых имеют свойство HasError, используя привязку шаблона.
<ContentControl x:Name="BaseContentControl" Content="{Binding}" ... >
Затем я пытаюсь извлечь информацию непосредственно из его DataContext.Это не работает:
<Label Content="{Binding ElementName=BaseContentControl, Path=DataContext.HasError}"/>
Но это работает отлично.
<Label Content="{Binding ElementName=BaseContentControl, Path=DataContext.Product.HasError}"/>
Я подумал, что это может быть проблема уведомления в ViewModel, поэтому я перешел на это:
class ProductDialogViewModel : Notifier
{
public ProductDialogViewModel() { }
public MyProduct Product { get; set; }
public bool HasError
{
get { return Product.HasError; }
set
{
if (Product.HasError != value)
{
Product.HasError = value;
OnPropertyChanged("HasError");
}
}
}
}
но безрезультатно (фактически метод set никогда не вызывается, поэтому он никогда не уведомляет).
Я не хочу напрямую ссылаться на конкретный экземпляр модели, поскольку представление может быть раздутос разными ViewModels.Как я могу это сделать?
Спасибо