FrameworkElement.FindName(String) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mengambil objek yang memiliki nama pengidentifikasi yang ditentukan.
public:
virtual Platform::Object ^ FindName(Platform::String ^ name) = FindName;
IInspectable FindName(winrt::hstring const& name);
public object FindName(string name);
function findName(name)
Public Function FindName (name As String) As Object
Parameter
- name
-
String
Platform::String
winrt::hstring
Nama objek yang diminta.
Mengembalikan
Objek yang diminta. Ini bisa null jika tidak ada objek yang cocok yang ditemukan di namescope XAML saat ini.
Keterangan
Penting
Untuk menggunakan metode ini FindName
secara efektif, Anda harus memahami konsep namescope XAML, dan bagaimana namescope XAML dibuat pada waktu muat XAML dan kemudian direferensikan dan mungkin dimodifikasi pada durasi. Untuk informasi selengkapnya, lihat namescope XAML.
Penggunaan FindName
paling umum dalam kode Windows Runtime Anda adalah dari dalam panggilan yang dihasilkan InitializeComponent
untuk halaman XAML. Dalam situasi ini, FindName
dipanggil hanya setelah halaman XAML dimuat. InitializeComponent
menyediakan infrastruktur sedih sehingga objek apa pun yang dibuat oleh pemuatan XAML dapat dengan mudah diakses oleh kode di belakang kode Anda. Anda kemudian dapat mereferensikan objek sebagai variabel yang memiliki nama yang sama dengan atribut x:Name yang dideklarasikan markup.
API run-time seperti FindName
bekerja melawan pohon objek run-time aplikasi seperti yang ada di memori. Ketika bagian dari pohon objek ini dibuat dari templat atau XAML yang dimuat run-time, namescope XAML biasanya tidak berdampingan dalam pohon objek tersebut. Hasilnya adalah mungkin ada objek bernama di pohon objek yang tidak dapat ditemukan oleh lingkup tertentu FindName
. Penghentian antara namescope XAML yang mungkin Anda temui dalam skenario aplikasi umum adalah ketika objek dibuat dengan menerapkan templat, atau ketika objek dibuat oleh panggilan ke XamlReader.Load dan kemudian ditambahkan ke pohon objek.
Jika Anda mengembalikan hasil null yang tidak terduga untuk FindName
, cobalah teknik ini:
- Untuk objek bernama yang berasal dari templat, jika Anda mendefinisikan atau berasal dari kontrol, Anda dapat memanggil GetTemplateChild dari cakupan objek tempat templat diterapkan. Anda harus berada dalam cakupan definisi kelas turunan untuk menggunakan GetTemplateChild, karena ini adalah metode Kontrol yang dilindungi.
- Jika Anda tidak berada dalam cakupan definisi kelas turunan, Anda mungkin dapat memasukkan pohon visual templat, dengan menggunakan VisualTreeHelper pada titik dalam masa pakai objek setelah templat diterapkan (menangani peristiwa Dimuat ). VisualTreeHelper menggunakan metafora induk-anak untuk berjalan di pohon, daripada menggunakan konsep namescope XAML. Berjalan di pohon umumnya membutuhkan pengetahuan khusus tentang komposisi kontrol karena berasal dari templat tertentu. Anda dapat menggunakan VisualTreeHelper.GetChild pada kontrol untuk mendapatkan akar templat kontrol yang diterapkan, dan memanggil
FindName
secara khusus pada akar templat untuk mengakses elemen yang diberi nama dalam templat XAML. - Untuk kasus XamlReader.Load , Anda harus mempertahankan referensi ke nilai pengembalian panggilan XamlReader.Load , yang merupakan objek yang akan menjadi pemilik atau dasar namescope XAML yang dibuat yang relevan. Kemudian panggil
FindName
dari cakupan itu sebagai gantinya.
Objek yang dikembalikan oleh FindName
belum tentu merupakan FrameworkElement. Misalnya, Anda mungkin menerapkan nama ke papan cerita animasi, dan berbagai jenis papan cerita animasi tidak berasal dari FrameworkElement.
Properti Nama untuk objek (atau atribut x:Name serupa) ditetapkan dengan menentukan atribut pada elemen objek dalam markup XAML. Anda dapat mengatur nilai Nama setelah sumber awal XAML dimuat, tetapi teknik ini memiliki beberapa batasan (lihat Keterangan dalam Nama).
TextElement mendefinisikan FindName serupa. Ini memungkinkan FindName
perilaku dalam model objek, yang tidak terbatas pada FrameworkElement. Panggilan dengan salah satu implementasi FindName
dapat melintasi ke pohon objek elemen FrameworkElement / text campuran, dan menggunakan namescope XAML umum sehingga FrameworkElement.FindName
panggilan dapat menemukan elemen teks bernama, dan sebaliknya.
Nilai nama yang ditambahkan atau diubah pada durasi di pohon objek akan diperbarui ke dalam namescope XAML bertindak pada tingkat tersebut di pohon objek. Dengan kata lain, jika Anda membuat FrameworkElement baru, beri Nama, lalu tambahkan ke pohon objek, memanggil FindName
dari dalam namescope XAML tersebut dapat menemukan dan mengembalikan objek yang dibuat kode.
Berlaku untuk
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk