XAML의 종속성 속성 변경에 대한 콜백 처리
런타임에 종속성 속성 값을 설정하면 해당 OnPropertyChanged
메서드가 즉시 호출됩니다. 그러나 디자이너가 XAML을 통해 속성 값을 할당하는 동안 이러한 콜백은 휴면 상태로 유지됩니다. 이 동작은 속성 래퍼 setter 메서드를 우회하고 속성 시스템의 SetValue
메서드를 직접 사용하는 효율성에서 비롯됩니다. 따라서 이 경우 속성 래퍼의 논리는 아무런 영향을 미치지 않습니다.
이 문제를 해결하려면 속성 메타데이터를 사용하여 PropertyChangedCallback
을 등록하세요.
<code class="language-csharp">public static readonly DependencyProperty IsClosedProperty = DependencyProperty.Register( "IsClosed", typeof(bool), typeof(GroupBox), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender, (o, e) => ((GroupBox)o).OnIsClosedChanged())); public bool IsClosed { get { return (bool)GetValue(IsClosedProperty); } set { SetValue(IsClosedProperty, value); } } private void OnIsClosedChanged() { _rowDefContent.Height = new GridLength((IsClosed ? 0 : 1), GridUnitType.Star); }</code>
이 접근 방식을 사용하면 소스가 XAML, 바인딩 등에 관계없이 OnIsClosedChanged
속성 값이 수정될 때 IsClosed
메서드가 실행됩니다.
위 내용은 XAML에서 종속성 속성 변경 시 콜백을 트리거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!