Страница не обновляется при изменении свойства - PullRequest
0 голосов
/ 13 мая 2018

У меня есть страница, содержащая кнопку, чей Datacontext взят из статического ресурса в этом коде:

<ObjectDataProvider x:Key="DataContext" ObjectType="{x:Type modelview:ProductionPageModelView}"/>
<Button Content="Save" DataContext="{StaticResource DataContext}" IsEnabled="{Binding HasPandingChanges,UpdateSourceTrigger=PropertyChanged,Mode=OneWay,NotifyOnSourceUpdated=True}"
        Command="{Binding ModifyProduction}" Margin="4" HorizontalAlignment="Stretch" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center"/>

Этот ресурс связан с ModelView, а свойство IsPandingChanges находится в базовом классе.ProductionPageModelView, (можно сказать, BaseModelView класс).

И у меня в представлении класс модели:

public static Dictionary<object, OpertationType> ChangeTracker { get; } = new Dictionary<object, OpertationType>();

public bool HasPandingChanges => ChangeTracker.Count > 0;

, когда я добавляю элемент в ChangeTracker Словарь, ничего не меняется и в отладке показывает, что он возвращает true.

Я пытался поместить OnPropertyChanged в каждую ChangeTracker.Add реализацию метода

public virtual object AddData()
{
    DataTransactionType = OpertationType.Insert;
    if (ChangeTracker.ContainsKey(this))
    {
        ChangeTracker[this] = DataTransactionType;
    }
    else
        ChangeTracker.Add(this, DataTransactionType);

    OnPropertyChange(nameof(HasPandingChanges));
    return null;
}

OnProeprtyChanged Method

protected virtual void OnPropertyChange([CallerMemberName] string Propertyname = null)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(Propertyname));
}

Когда я звоню AddData.Ничего не изменилось, даже HasPandingChanges возвращает true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...