Maison > développement back-end > C++ > Comment accéder aux contrôles dans les modèles de données XAML dans un FlipView ?

Comment accéder aux contrôles dans les modèles de données XAML dans un FlipView ?

Susan Sarandon
Libérer: 2025-01-07 15:42:40
original
950 Les gens l'ont consulté

Accès aux contrôles dans les modèles de données XAML dans un FlipView

Les modèles de données rationalisent le rendu des éléments en XAML, mais l'accès aux contrôles internes présente un défi en raison de la séparation visuelle et logique de l'arborescence. La propriété Name n'est pas directement utilisable dans le FlipView d'un DataTemplate en raison de conflits de noms potentiels entre plusieurs instances de modèle.

La solution réside dans l'utilisation de VisualTreeHelper pour parcourir l'arborescence visuelle et localiser le contrôle spécifique au sein de chaque élément généré.

Une fonction d'assistance :

Cette fonction recherche récursivement dans l'arborescence visuelle un contrôle portant un nom donné :

<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>
Copier après la connexion

Accès au contrôle :

Pour récupérer un contrôle (par exemple, un Image nommé "img1") à partir de l'élément FlipView actuellement sélectionné, utilisez ce code :

<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>
Copier après la connexion

Ceci récupère le contrôle Image. Pensez à gérer le cas null si le contrôle n'est pas trouvé.

How to Access Controls within XAML DataTemplates in a FlipView?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal