Templat data memperkemas pemaparan item dalam XAML, tetapi mengakses kawalan dalaman memberikan cabaran kerana pemisahan pokok visual dan logik. Sifat Name
tidak boleh digunakan secara langsung dalam FlipView
's DataTemplate
kerana kemungkinan konflik penamaan merentas berbilang tika templat.
Penyelesaian terletak pada penggunaan VisualTreeHelper
untuk melintasi pepohon visual dan mencari kawalan khusus dalam setiap item yang dijana.
Fungsi Pembantu:
Fungsi ini secara rekursif mencari pepohon visual untuk kawalan dengan nama yang diberikan:
<code class="language-csharp">public T FindChildControl<T>(DependencyObject control, string ctrlName) where T : DependencyObject { int childNumber = VisualTreeHelper.GetChildrenCount(control); for (int i = 0; i < childNumber; i++) { DependencyObject child = VisualTreeHelper.GetChild(control, i); FrameworkElement fe = child as FrameworkElement; if (fe != null && fe.Name == ctrlName) { return child as T; } else { T nextLevel = FindChildControl<T>(child, ctrlName); if (nextLevel != null) return nextLevel; } } return null; }</code>
Mengakses Kawalan:
Untuk mendapatkan semula kawalan (cth., Image
bernama "img1") daripada item FlipView
yang sedang dipilih, gunakan kod ini:
<code class="language-csharp">var selectedItem = MyFlipView.SelectedItem; if (selectedItem == null) return null; var container = MyFlipView.ItemContainerGenerator.ContainerFromItem(selectedItem); Image img1 = FindChildControl<Image>(container, "img1");</code>
Ini mendapatkan semula kawalan Image
. Ingat untuk mengendalikan kes null
jika kawalan tidak ditemui.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Kawalan dalam XAML DataTemplates dalam FlipView?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!