UserControl OnPropertyChanged проблема - PullRequest
       2

UserControl OnPropertyChanged проблема

0 голосов
/ 26 сентября 2011

У меня есть метод OnPropertyChanged в моем классе UserControl:

private static void OnColorChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
    {
        ColorPicker colorPicker = (ColorPicker)sender;

        Color oldColor = (Color)e.OldValue;
        Color newColor = (Color)e.NewValue;
        colorPicker.Red = newColor.R;
        colorPicker.Green = newColor.G;
        colorPicker.Blue = newColor.B;

        colorPicker._previousColors.Push(oldColor); //don't update if undo command executed
        colorPicker.OnColorChanged(oldColor, newColor);
    }

_previousColors is:

private Stack<Color> _previousColors = new Stack<Color>();

, и я не хочу обновлять этот стек, если выполнена команда отмены:

private void UndoCommand_CanExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = _previousColors.Count > 1;
    }

    private void UndoCommand_Executed(object sender, ExecutedRoutedEventArgs e)
    {
        var color = _previousColors.Pop();
        this.Color = color;

    }

Как реализовать это условие в методе OnColorChanged?

1 Ответ

1 голос
/ 26 сентября 2011

Похоже, у вас может быть private bool (давайте назовем его isUndoing), который устанавливается в true в начале выполнения отмены и сбрасывается в false в конце. В OnColorChanged посмотрите значение isUndoing и примите соответствующие меры. Разве это не сработает?

Кроме того, я согласен с Рэйчел, что ваши друзья проголосовали за отметку "upvoting" и "Answer". Каждый раз, когда вы отдаете кому-то должное за хорошие посты, люди с большей вероятностью помогут вам в будущем,

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