런타임 중에 IsClosed
의 값을 설정하면 OnIsClosedChanged()
이 정상적으로 호출됩니다. 그러나 Designer는 속성 값을 설정하지만 OnIsClosedChanged()
은 호출하지 않습니다. 분명히 IsClosed
종속성 속성에서 xaml 변경을 수신 할 때의 콜백
public static DependencyProperty IsClosedProperty = DependencyProperty.Register("IsClosed", typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
public bool IsClosed {
get {
return (bool)this.GetValue(IsClosedProperty);
}
set {
if ((bool)this.GetValue(IsClosedProperty) == value)
return;
this.SetValue(IsClosedProperty, value);
OnIsClosedChanged();
}
}
private void OnIsClosedChanged() {
_rowDefContent.Height = new GridLength((IsClosed ? 0 : 1), GridUnitType.Star);
}
는 디자이너에 의해 수정되지 않습니다 만 IsClosedProperty
는 XAML 변화를받습니다.
내 질문은 : 디자이너에서 값을 수정 한 후 IsClosed
을 어떻게 실행할 수 있습니까? 또는 최소한 런타임 이외의 변경 사항에 로직을 추가하십시오.
당신이 ValidateValueCallback 함께 놀러하려고 했습니까? DependencyProperty.Register의 오버로드 된 메서드를 사용하십시오. https://msdn.microsoft.com/en-us/library/ms597501(v=vs.110).aspx –
몇 시간 전에 동일한 실수를 범했습니다. 의존성 속성은 무엇인가 깊다. 이 속성은 사용자를 위해 만 노출하지만 WPF는 속성을 사용하지 않습니다 (삭제할 수 있음). 그리고 @AlexK, 주석이 옳다. (답이 될 수도있다.) * 의존성 프로퍼티 * (* 당신의 프로퍼티와 오해하지 말아야 함)가 UI에 의해 변경 될 때 콜백을 사용한다. (디자이너, 런타임에 사용자에 의해 , 등). – Sinatr