首頁 > 後端開發 > C++ > 如何存取 FlipView 中 XAML 資料模板中的控制項?

如何存取 FlipView 中 XAML 資料模板中的控制項?

Susan Sarandon
發布: 2025-01-07 15:42:40
原創
952 人瀏覽過

存取 FlipView 中 XAML 資料範本中的控制項

資料模板簡化了 XAML 中的項目渲染,但由於視覺樹和邏輯樹分離,存取內部控制提出了挑戰。 Name 屬性不能直接在 FlipViewDataTemplate 中使用,因為多個模板實例之間可能存在命名衝突。

解決方案在於使用 VisualTreeHelper 遍歷視覺化樹並找到每個生成項目中的特定控制項。

輔助功能:

此函數遞歸地在視覺化樹中搜尋具有給定名稱的控制項:

<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>
登入後複製

存取控制:

要從目前選定的 Image 項目中擷取控制項(例如,名為「img1」的 FlipView),請使用下列程式碼:

<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>
登入後複製

這將檢索 Image 控制項。 如果找不到控件,請記住處理 null 情況。

How to Access Controls within XAML DataTemplates in a FlipView?

以上是如何存取 FlipView 中 XAML 資料模板中的控制項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板