Rumah >pembangunan bahagian belakang >C++ >Mengapa tidak mengikat DependencyProperty saya mengemas kini pandangan ibu bapa?

Mengapa tidak mengikat DependencyProperty saya mengemas kini pandangan ibu bapa?

DDD
DDDasal
2025-02-01 17:21:09580semak imbas

Why Doesn't My DependencyProperty Binding Update the Parent ViewModel?

Penyelesaian masalah DependencyProperty Bindings dalam Kawalan Penyemak Imbas Fail

Semasa membina kawalan penyemak imbas fail tersuai, isu biasa timbul di mana memilih fail mengemas kini kotak teks dalaman kawalan tetapi gagal menyebarkan perubahan ke harta

dalam model pandangan induk. Ini berlaku walaupun menggunakan SelectedFile dan pengikatan standard. DependencyProperty

punca akar sering berpunca daripada menetapkan

usercontrol kepada dirinya sendiri dalam pembina: DataContext

<code class="language-csharp">DataContext = this;</code>
Rujukan diri ini

mengatasi yang diwarisi DataContext dari ibu bapa, memecahkan pengikatan kepada model pandangan induk. DataContext

Penyelesaian: Menggunakan mengikat RelativeSource

Penyelesaian ini melibatkan mengubahsuai pengikatan dalam XAML UserControl untuk secara jelas mensasarkan model pandangan induk. Gunakan

untuk melintasi pokok visual: RelativeSource

<code class="language-xaml"><TextBox Text="{Binding SelectedFile, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" /></code>
Pengikatan yang disemak semula ini memastikan bahawa harta

dalam usercontrol mengikat dengan betul ke harta SelectedFile model pandangan ibu bapa, walaupun ketika SelectedFile usercontrol ditetapkan secara dalaman. DataContext

Sekarang, ketika membenamkan usercontrol:

<code class="language-xaml"><FileBrowserControl SelectedFile="{Binding SelectedFile}" /></code>
Pengikatan akan berfungsi seperti yang diharapkan, mengemas kini harta

Atas ialah kandungan terperinci Mengapa tidak mengikat DependencyProperty saya mengemas kini pandangan ibu bapa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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