Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk mencetuskan panggilan balik mengenai perubahan harta kebergantungan dari XAML?

Bagaimana untuk mencetuskan panggilan balik mengenai perubahan harta kebergantungan dari XAML?

Barbara Streisand
Lepaskan: 2025-01-24 12:47:10
asal
622 orang telah melayarinya

How to Trigger Callbacks on Dependency Property Changes from XAML?

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan