Теперь я нашел ответ. 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
. Спасибо за помощь, ребята!
Просто первое, что пришло на ум не могли Вы делать немного самопроводного соединения:
def printErr = System.err.&println
printErr("AHHH")
, но это - немного руководства
Groovy имеет доступ к JRE:
System.err.println "goes to stderr"
, Хотя может быть больше Groovy-fied путь...
Если Вы просто хотите, чтобы что-то короче ввело, вот две опции. Во-первых, можно импортировать 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 путь, потому что особенное переименование может сбивать с толку людей, которые прочитали Ваш код.