Mengendalikan panggilan balik untuk perubahan sifat kebergantungan dalam XAML
Apabila menetapkan nilai untuk sifat kebergantungan pada masa jalan, kaedah OnPropertyChanged
yang sepadan dipanggil serta-merta. Walau bagaimanapun, panggilan balik ini kekal tidak aktif sementara pereka bentuk memberikan nilai harta melalui XAML. Tingkah laku ini berpunca daripada kecekapan menggunakan kaedah SetValue
sistem harta secara langsung, memintas kaedah penetap pembalut harta. Jadi logik dalam pembalut harta tidak mempunyai kesan dalam kes ini.
Untuk menyelesaikan isu ini, sila daftarkan PropertyChangedCallback
menggunakan metadata atribut:
<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>
Pendekatan ini memastikan kaedah OnIsClosedChanged
dilaksanakan apabila nilai sifat IsClosed
diubah suai, tanpa mengira sumbernya ialah XAML, mengikat, dsb.
Atas ialah kandungan terperinci Bagaimana untuk mencetuskan panggilan balik mengenai perubahan harta kebergantungan dari XAML?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!