Как я перенаправляю вывод к stderr в отличном?

Теперь я нашел ответ. ValidateValueCallback действительно близок! (как указал Алекс К). Но это статический метод, и я не получаю никакой ссылки на экземпляр, который был изменен. Ключом является использование PropertyChangedCallback в FrameworkPropertyMetadata, который также является аргументом, переданным методу Property.Register. См.:

public static DependencyProperty IsClosedProperty = DependencyProperty.Register("IsClosed", typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender, new PropertyChangedCallback(OnIsClosedChangedPCC)));

        public bool IsClosed {
            get {
                return (bool)this.GetValue(IsClosedProperty);
            }
            set {
                this.SetValue(IsClosedProperty, value);
                OnIsClosedChanged();
            }
        }



        private static void OnIsClosedChangedPCC(DependencyObject d, DependencyPropertyChangedEventArgs e) {
            GroupBox current = (GroupBox)d;
            current.IsClosed = current.IsClosed;
        }



        private void OnIsClosedChanged() {
            _rowDefContent.Height = new GridLength((IsClosed ? 0 : 1), GridUnitType.Star);
        }

Теперь он снова устанавливает IsClosedValue, который запускает запуск OnIsClosedChanged. Спасибо за помощь, ребята!

29
задан timdisney 19 December 2008 в 19:26
поделиться

3 ответа

Просто первое, что пришло на ум не могли Вы делать немного самопроводного соединения:

def printErr = System.err.&println
printErr("AHHH")

, но это - немного руководства

22
ответ дан codeLes 14 October 2019 в 07:52
поделиться

Groovy имеет доступ к JRE:

System.err.println "goes to stderr"

, Хотя может быть больше Groovy-fied путь...

18
ответ дан neu242 14 October 2019 в 07:52
поделиться

Если Вы просто хотите, чтобы что-то короче ввело, вот две опции. Во-первых, можно импортировать java.lang. Система как что-либо Вам нравится, конкретно что-то короче как "sys":

import java.lang.System as sys
sys.err.println("ERROR Will Robinson")
113-секундный, можно присвоить поток System.err переменной и использованию что переменная с тех пор как псевдоним для System.err, как:

err = System.err
err.println("ERROR again Will Robinson")

Это имеет возможное преимущество, что все функции System.err доступны, таким образом, Вы не должны обеспечивать электричеством каждого индивидуально (например, err.print, err.println, и т.д.).

, Надо надеяться, существует стандартный Groovy путь, потому что особенное переименование может сбивать с толку людей, которые прочитали Ваш код.

1
ответ дан 14 October 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: